0

次の Java クラスがあります。

public class ModuleParsed {

  String id_component;
  String id_instance;
  Map<ModuleParam, ModuleParam> input;
  Map<ModuleParam, List<ModuleParam>> output;
  int id_paas;
}

public class ModuleParam {

  String name;
  Object type;
}

として解析するために期待される JSON は何List<ModuleParsed>ですか?

listModules = gson.fromJson(br, new TypeToken<List<ModuleParsed>>() {}.getType());

入力パラメーターと出力パラメーターを導入するまでは、すべて問題ありませんでした。

編集

逆のプロセスを行うことで、JSONは次のようになるはずです

[
    {
        "id_component": "mod1",
        "id_instance": "mod1_inst1",
        "input": {  
            "moduleParam": {
                "name": "param3",
                "type": "obj3"
            },
            "moduleParam": {
                "name": "param2",
                "type": "obj2"
            }
        },
        "id_paas": 1
    },
    {
        "id_component": "mod2",
        "id_instance": "mod2_inst1",
        "input": {
            "moduleParam": {
                "name": "param3",
                "type": "obj3"
            },
            "moduleParam": {
                "name": "param2",
                "type": "obj2"
            }
        },
        "id_paas": 1
    }
]

moduleParam 要素は次のようなものでした。parser.ModuleParam@36c51089

これらの要素にどのように名前を付けても、次のエラーが発生します。

Exception in thread "main" com.google.gson.JsonParseException: Expecting object found: "moduleParam"

ModuleParsedGsonでクラスを取得するにはどうすればよいですか?

4

1 に答える 1

0

@Brianのコメントに続いて、複雑なオブジェクトをキーとして使用する必要がないことに気づいたので、これが私の解決策でした。

public class ModuleParsed {

    String id_component;
    String id_instance;
    Map<String, ModuleParam> input;
    Map<String, List<ModuleParam>> output;
    int id_paas;
}

public class ModuleParam {

    String name;
    String id_module;
    String id_instance;
}

次のJSONを作成しました

[
    {
        "id_component": "mod1",
        "id_instance": "mod1_inst1",
        "input": {
            "input1": {}
        },
        "output": {
            "output1": [
                {
                    "name": "input1",
                    "id_module": "mod2",
                    "id_instance": "mod2_inst1",
                    "type": "paramType"
                },
                {
                    "name": "input2",
                    "id_module": "mod2",
                    "id_instance": "mod2_inst1",
                    "type": "paramType"
                }
            ],
            "output2": []
        },
        "id_paas": 1
    },
    {
        "id_component": "mod2",
        "id_instance": "mod2_inst1",
        "input": {
            "input1": {
                "name": "output1",
                "id_module": "mod1",
                "id_instance": "mod1_inst1",
                "type": "paramType"
            },
            "input2": {
                "name": "output1",
                "id_module": "mod1",
                "id_instance": "mod1_inst1",
                "type": "paramType"
            }
        },
        "output": {},
        "id_paas": 1
    }
]

今回はJSONが正しく解析されました。

于 2013-03-07T13:49:30.330 に答える