以下代码打印以下内容作为输入,但我想将此JSON字符串作为输入直接传递给parse方法(最好是作为字符串参数)。我该怎么做?
{ “VAL1”: “V1”, “val2的”: “V2”}
import com.google.gson.*;
public class ParseJSON {
String val1;
String val2;
transient String val3;
public static void main(String[] args) {
Gson gson = new GsonBuilder().create();
ParseJSON parseJson = new ParseJSON();
parseJson.val1 = "v1";
parseJson.val2 = "v2";
parseJson.val3 = "v3";
String requestBody = gson.toJson(parseJson);
System.out.println(requestBody);
JsonParser parser = new JsonParser();
// JsonArray array = parser.parse(requestBody).getAsJsonArray();
}
}
答案 0 :(得分:2)
正在创建的JSON将被视为JSON对象,而不是数组。要正确解析它,您需要调用:
JsonObject object = parser.parse(requestBody).getAsJsonObject();
JSON数组看起来更像是这样:
[{"va1": "v1", "val2": "v2", "val3": "v3"}, {"val4": "v4", "val4": "v5", "val5": "v6"}]
这是一个包含两个JSON对象的JSON数组。 JSON数组与您在Java中看到的数组类似,它们具有[
]
括号,并包含逗号分隔的对象/数组/基元列表。
此外,您也可以像这样解析它:
JsonElement element = parser.parse(requestBody);
获得JsonElement
后,您可以调用isJsonArray()
或isJsonObject()
等方法来查找您已解析的String
的顶级JSON元素。
答案 1 :(得分:0)
*You should do that in a following code for your request*
static String val1 = "v1";
static String val2 = "v2";
transient String val3;
public static void main(String[] args) {
JSONArray arrayTable = new JSONArray();
JSONObject node = new JSONObject();
node.put("val1", val1);
node.put("val2", val2);
arrayTable.add(node);
System.out.println(arrayTable);
}
**Dependency lib**:
<dependency>
<groupId>json</groupId>
<artifactId>json</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>net.sf.ezmorph</groupId>
<artifactId>ezmorph</artifactId>
<version>1.0.6</version>
</dependency>