2 * Copyright (c) 2010-2021 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.opensprinkler.internal.util;
15 import java.util.ArrayList;
16 import java.util.List;
18 import com.google.gson.JsonArray;
19 import com.google.gson.JsonElement;
20 import com.google.gson.JsonObject;
21 import com.google.gson.JsonParser;
24 * The {@link Parse} class contains static methods for parsing JSON
25 * output based on key names.
27 * @author Chris Graham - Initial contribution
30 private static JsonParser jsonParser = new JsonParser();
33 * Parses an integer from a JSON string given its key name.
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.
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();
46 * Parses a string from a JSON string given its key name.
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.
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();
59 * Parses an int from a JSON array given its key name in the JSON string.
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.
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();
74 * Parses a String from a JSON array given its key name in the JSON string.
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.
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();
89 * Parses an int array from a JSON string given its key name.
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.
95 public static List<Integer> jsonIntArray(String jsonData, String keyName) {
96 List<Integer> returnList = new ArrayList<>();
98 JsonElement jelement = jsonParser.parse(jsonData);
99 JsonObject jobject = jelement.getAsJsonObject();
100 JsonArray jarray = jobject.get(keyName).getAsJsonArray();
102 for (int i = 0; i < jarray.size(); i++) {
103 returnList.add(jarray.get(i).getAsInt());
110 * Parses an String array from a JSON string given its key name.
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.
116 public static List<String> jsonStringArray(String jsonData, String keyName) {
117 List<String> returnList = new ArrayList<>();
119 JsonElement jelement = jsonParser.parse(jsonData);
120 JsonObject jobject = jelement.getAsJsonObject();
121 JsonArray jarray = jobject.get(keyName).getAsJsonArray();
123 for (int i = 0; i < jarray.size(); i++) {
124 returnList.add(jarray.get(i).getAsString());