0

次のコードは、以下を入力として出力しますが、この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();
    }
}
4

2 に答える 2

2

作成される JSON は、配列ではなく JSON オブジェクトと見なされます。正しく解析するには、次を呼び出す必要があります。

JsonObject object = parser.parse(requestBody).getAsJsonObject();

JSON 配列は次のようになります。

[{"va1": "v1", "val2": "v2", "val3": "v3"}, {"val4": "v4", "val4": "v5", "val5": "v6"}]

これは、2 つの JSON オブジェクトを含む JSON 配列です。JSON 配列は、Java で見られる配列と同様のスタイルを持ち、[ ]括弧があり、オブジェクト/配列/プリミティブのカンマ区切りのリストが含まれています。

さらに、次のように解析することもできます。

JsonElement element = parser.parse(requestBody);

を取得したら、またはJsonElementのようなメソッドを呼び出して、解析した最上位の JSON 要素が何であるisJsonArray()かを調べることができます。isJsonObject()String

于 2013-01-24T05:56:34.993 に答える
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>
于 2013-01-24T06:04:23.773 に答える