如何直接提供JSON输入作为String参数

时间:2013-01-24 05:48:31

标签: java json

以下代码打印以下内容作为输入,但我想将此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();
    }
}

2 个答案:

答案 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>