]> git.basschouten.com Git - openhab-addons.git/blob
5b4691d389e2214423152e2bfef386d63d2d0dbf
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 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     private static JsonParser jsonParser = new JsonParser();
31
32     /**
33      * Parses an integer from a JSON string given its key name.
34      *
35      * @param jsonData The JSON formatted string to parse from.
36      * @param keyName The name of the object data to return.
37      * @return int value of the objects data.
38      */
39     public static int jsonInt(String jsonData, String keyName) {
40         JsonElement jelement = jsonParser.parse(jsonData);
41         JsonObject jobject = jelement.getAsJsonObject();
42         return jobject.get(keyName).getAsInt();
43     }
44
45     /**
46      * Parses a string from a JSON string given its key name.
47      *
48      * @param jsonData The JSON formatted string to parse from.
49      * @param keyName The name of the object data to return.
50      * @return String value of the objects data.
51      */
52     public static String jsonString(String jsonData, String keyName) {
53         JsonElement jelement = jsonParser.parse(jsonData);
54         JsonObject jobject = jelement.getAsJsonObject();
55         return jobject.get(keyName).getAsString();
56     }
57
58     /**
59      * Parses an int from a JSON array given its key name in the JSON string.
60      *
61      * @param jsonData The JSON formatted string to parse from.
62      * @param keyName The name of the object array to search through.
63      * @param index Index (starting at 0) number of the item in the JSON array to return.
64      * @return int value of the objects data.
65      */
66     public static int jsonIntAtArrayIndex(String jsonData, String keyName, int index) {
67         JsonElement jelement = jsonParser.parse(jsonData);
68         JsonObject jobject = jelement.getAsJsonObject();
69         JsonArray jarray = jobject.get(keyName).getAsJsonArray();
70         return jarray.get(index).getAsInt();
71     }
72
73     /**
74      * Parses a String from a JSON array given its key name in the JSON string.
75      *
76      * @param jsonData The JSON formatted string to parse from.
77      * @param keyName The name of the object array to search through.
78      * @param index Index (starting at 0) number of the item in the JSON array to return.
79      * @return String value of the objects data.
80      */
81     public static String jsonStringAtArrayIndex(String jsonData, String keyName, int index) {
82         JsonElement jelement = jsonParser.parse(jsonData);
83         JsonObject jobject = jelement.getAsJsonObject();
84         JsonArray jarray = jobject.get(keyName).getAsJsonArray();
85         return jarray.get(index).getAsString();
86     }
87
88     /**
89      * Parses an int array from a JSON string given its key name.
90      *
91      * @param jsonData The JSON formatted string to parse from.
92      * @param keyName The name of the object array to return.
93      * @return List of Integers with the values of a JSON Array.
94      */
95     public static List<Integer> jsonIntArray(String jsonData, String keyName) {
96         List<Integer> returnList = new ArrayList<>();
97
98         JsonElement jelement = jsonParser.parse(jsonData);
99         JsonObject jobject = jelement.getAsJsonObject();
100         JsonArray jarray = jobject.get(keyName).getAsJsonArray();
101
102         for (int i = 0; i < jarray.size(); i++) {
103             returnList.add(jarray.get(i).getAsInt());
104         }
105
106         return returnList;
107     }
108
109     /**
110      * Parses an String array from a JSON string given its key name.
111      *
112      * @param jsonData The JSON formatted string to parse from.
113      * @param keyName The name of the object array to search through.
114      * @return List of Strings with the values of a JSON Array.
115      */
116     public static List<String> jsonStringArray(String jsonData, String keyName) {
117         List<String> returnList = new ArrayList<>();
118
119         JsonElement jelement = jsonParser.parse(jsonData);
120         JsonObject jobject = jelement.getAsJsonObject();
121         JsonArray jarray = jobject.get(keyName).getAsJsonArray();
122
123         for (int i = 0; i < jarray.size(); i++) {
124             returnList.add(jarray.get(i).getAsString());
125         }
126
127         return returnList;
128     }
129 }