0

我有一个我不知道的问题,任何人都可以帮助我:例如我们有一个 json:

    {
      "status":"0",
      "result": {
        "object1": {
          "name":"name1",
          "age":"21"
        },
        "object2": {
          "event":"new year",
          "date":"date"
        },
        "object1_1": {
          "name":"name2",
          "age":"22"
        },
        "object2_1": {
          "event":"birthday",
          "date":"date"
        }
      }
    }
4

2 回答 2

1

您可以尝试使用杰克逊 json 转换为对象。 http://jackson.codehaus.org/

于 2012-08-24T10:14:02.730 回答
0

如果您想将此 json 反序列化为包含 Map 的对象(并且该地图包含文字值和其他地图)。假设你有一个类似于:

class MyBean {
    int status;
    Map<String, Object> result;
}

MyBean myBean = new Gson().fromJson(jsonString, MyBean.class);

它应该无需修改即可工作。请注意,如果状态的类型不是数字,我不确定 Gson 是否像在 json 字符串中那样进行转换,值被引用,同样的事情适用于您的“年龄”属性。

您还可以查看 Genson 库http://code.google.com/p/genson/它具有大多数 Gson 功能,其他库没有提供的其他功能并且具有更好的性能。查看 wiki http://code.google.com/p/genson/wiki/GettingStarted

编辑

名称真的像 object1_1、object2_1 等吗?在查看结构时,我想 object1 与 object2 一起使用很长。如果您使用 gson,您可以编写自定义 TypeAdapter http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/TypeAdapter.html

所以你可以创建一个类似的根对象

 class Response {
     int status;
     List<MyObject> result;
 }

 class MyObject {
     String name;
     int age;
     String event;
     String date;
 }

在您的 TypeAdapter 的 read 方法中,您应该根据键(object1 与 object2,object1_1 与 object2_1...)组合 MyObject 的实例或采取类似的方法。如果您想了解有关如何执行此操作的更多详细信息,也可以在 Gson google group 上提问。

于 2012-08-24T11:57:08.213 回答