0

私は次のようなJSONファイルを持っていますString

    String compString = "{\n" +
            "      \"Component\": {\n" +
            "        \"name\": \"Application\",\n" +
            "        \"environment\": \"QA\",\n" +
            "        \"hosts\": [\n" +
            "          \"box1\",\n" +
            "          \"box2\"\n" +
            "        ],\n" +
            "        \"directories\": [\n" +
            "          \"/path/to/dir1/\",\n" +
            "          \"/path/to/dir2/\",\n" +
            "          \"/path/to/dir1/subdir/\",\n" +
            "        ]\n" +
            "      }\n" +
            "    }";

私はそれを表すBeanを持っています(間違っている場合は正しい)

public class Component {

    String name;
    String environment;

    List<String> hosts = new ArrayList<String>();
    List<String> directories = new ArrayList<String>();

    // standard getters and setters
}

私はこの文字列をこのクラスにフィードしようとしています:

    Gson gson = new Gson();
    Component component = gson.fromJson(compString, Component.class);

    System.out.println(component.getName());

上記は機能しません。(nullコンポーネントの名前の値が設定されていないかのように、戻ってきました)

何が足りないのですか?

4

2 に答える 2

2

実際、Jsonから囲んでいるクラスを削除する必要があります。

実際、JSONはそれを囲むクラスのコンテンツから始まります。

したがって、JSONは次のようになります。

 String compString = "{\n" +
                    "        \"name\": \"Application\",\n" +
                    "        \"environment\": \"QA\",\n" +
                    "        \"hosts\": [\n" +
                    "          \"box1\",\n" +
                    "          \"box2\"\n" +
                    "        ],\n" +
                    "        \"directories\": [\n" +
                    "          \"/path/to/dir1/\",\n" +
                    "          \"/path/to/dir2/\",\n" +
                    "          \"/path/to/dir1/subdir/\",\n" +
                    "        ]\n" +
                    "      }\n";
于 2012-10-24T00:55:31.443 に答える
1
String compString = 
                "       {\n" +
                "        \"name\": \"Application\",\n" +
                "        \"environment\": \"QA\",\n" +
                "        \"hosts\": [\n" +
                "          \"box1\",\n" +
                "          \"box2\"\n" +
                "        ],\n" +
                "        \"directories\": [\n" +
                "          \"/path/to/dir1/\",\n" +
                "          \"/path/to/dir2/\",\n" +
                "          \"/path/to/dir1/subdir/\",\n" +
                "        ]}" ;

私はあなたがjsonについてもっと読むべきだと思います、私はあなたのjson文字列から何かを削除してから成功しました。

于 2012-10-24T00:54:23.027 に答える