]> git.basschouten.com Git - openhab-addons.git/blob
6fffab23fe03e1feed120f02f7bbc9be3266c920
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2021 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.opensprinkler.internal.util;
14
15 import java.util.ArrayList;
16 import java.util.List;
17
18 import com.google.gson.JsonArray;
19 import com.google.gson.JsonElement;
20 import com.google.gson.JsonObject;
21 import com.google.gson.JsonParser;
22
23 /**
24  * The {@link Parse} class contains static methods for parsing JSON
25  * output based on key names.
26  *
27  * @author Chris Graham - Initial contribution
28  */
29 public class Parse {
30     /**
31      * Parses an integer from a JSON string given its key name.
32      *
33      * @param jsonData The JSON formatted string to parse from.
34      * @param keyName The name of the object data to return.
35      * @return int value of the objects data.
36      */
37     public static int jsonInt(String jsonData, String keyName) {
38         JsonElement jelement = JsonParser.parseString(jsonData);
39         JsonObject jobject = jelement.getAsJsonObject();
40         return jobject.get(keyName).getAsInt();
41     }
42
43     /**
44      * Parses a string from a JSON string given its key name.
45      *
46      * @param jsonData The JSON formatted string to parse from.
47      * @param keyName The name of the object data to return.
48      * @return String value of the objects data.
49      */
50     public static String jsonString(String jsonData, String keyName) {
51         JsonElement jelement = JsonParser.parseString(jsonData);
52         JsonObject jobject = jelement.getAsJsonObject();
53         return jobject.get(keyName).getAsString();
54     }
55
56     /**
57      * Parses an int from a JSON array given its key name in the JSON string.
58      *
59      * @param jsonData The JSON formatted string to parse from.
60      * @param keyName The name of the object array to search through.
61      * @param index Index (starting at 0) number of the item in the JSON array to return.
62      * @return int value of the objects data.
63      */
64     public static int jsonIntAtArrayIndex(String jsonData, String keyName, int index) {
65         JsonElement jelement = JsonParser.parseString(jsonData);
66         JsonObject jobject = jelement.getAsJsonObject();
67         JsonArray jarray = jobject.get(keyName).getAsJsonArray();
68         return jarray.get(index).getAsInt();
69     }
70
71     /**
72      * Parses a String from a JSON array given its key name in the JSON string.
73      *
74      * @param jsonData The JSON formatted string to parse from.
75      * @param keyName The name of the object array to search through.
76      * @param index Index (starting at 0) number of the item in the JSON array to return.
77      * @return String value of the objects data.
78      */
79     public static String jsonStringAtArrayIndex(String jsonData, String keyName, int index) {
80         JsonElement jelement = JsonParser.parseString(jsonData);
81         JsonObject jobject = jelement.getAsJsonObject();
82         JsonArray jarray = jobject.get(keyName).getAsJsonArray();
83         return jarray.get(index).getAsString();
84     }
85
86     /**
87      * Parses an int array from a JSON string given its key name.
88      *
89      * @param jsonData The JSON formatted string to parse from.
90      * @param keyName The name of the object array to return.
91      * @return List of Integers with the values of a JSON Array.
92      */
93     public static List<Integer> jsonIntArray(String jsonData, String keyName) {
94         List<Integer> returnList = new ArrayList<>();
95
96         JsonElement jelement = JsonParser.parseString(jsonData);
97         JsonObject jobject = jelement.getAsJsonObject();
98         JsonArray jarray = jobject.get(keyName).getAsJsonArray();
99
100         for (int i = 0; i < jarray.size(); i++) {
101             returnList.add(jarray.get(i).getAsInt());
102         }
103
104         return returnList;
105     }
106
107     /**
108      * Parses an String array from a JSON string given its key name.
109      *
110      * @param jsonData The JSON formatted string to parse from.
111      * @param keyName The name of the object array to search through.
112      * @return List of Strings with the values of a JSON Array.
113      */
114     public static List<String> jsonStringArray(String jsonData, String keyName) {
115         List<String> returnList = new ArrayList<>();
116
117         JsonElement jelement = JsonParser.parseString(jsonData);
118         JsonObject jobject = jelement.getAsJsonObject();
119         JsonArray jarray = jobject.get(keyName).getAsJsonArray();
120
121         for (int i = 0; i < jarray.size(); i++) {
122             returnList.add(jarray.get(i).getAsString());
123         }
124
125         return returnList;
126     }
127 }