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
31 * Parses an integer from a JSON string given its key name.
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.
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();
44 * Parses a string from a JSON string given its key name.
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.
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();
57 * Parses an int from a JSON array given its key name in the JSON string.
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.
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();
72 * Parses a String from a JSON array given its key name in the JSON string.
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.
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();
87 * Parses an int array from a JSON string given its key name.
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.
93 public static List<Integer> jsonIntArray(String jsonData, String keyName) {
94 List<Integer> returnList = new ArrayList<>();
96 JsonElement jelement = JsonParser.parseString(jsonData);
97 JsonObject jobject = jelement.getAsJsonObject();
98 JsonArray jarray = jobject.get(keyName).getAsJsonArray();
100 for (int i = 0; i < jarray.size(); i++) {
101 returnList.add(jarray.get(i).getAsInt());
108 * Parses an String array from a JSON string given its key name.
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.
114 public static List<String> jsonStringArray(String jsonData, String keyName) {
115 List<String> returnList = new ArrayList<>();
117 JsonElement jelement = JsonParser.parseString(jsonData);
118 JsonObject jobject = jelement.getAsJsonObject();
119 JsonArray jarray = jobject.get(keyName).getAsJsonArray();
121 for (int i = 0; i < jarray.size(); i++) {
122 returnList.add(jarray.get(i).getAsString());