在java中解析一个复杂的json对象,它在一个节点中有一些int值

时间:2015-08-17 05:22:19

标签: java json

plz帮我解析json。我从一个源获取这个json但问题是它在一个节点中有一个int值,它是item id值。  "28": { and "44": {位于节点位置,无法解析它。

{
  "request": {
      "Target": "some target",
    "Format": "json",
    "Service": "some service",
    "Version": "2"
  },

"response": {
    "status": 1,
    "httpStatus": 200,
    "data": {
      "28": {
        "Offer": {
          "id": "28",
          "name": "some name",
          "description":"some data",
          "url": null,
          "url2": null,
        }
      },
      "44": {
        "Offer": {
          "id": "44",
          "name": "some name",
          "description":"some data",
          "url": null,
          "url2": null,
        }
      }
     }
    }
}

2 个答案:

答案 0 :(得分:0)

如果您使用的是jackson解析,请将'data'定义为HashMap<String,String>

答案 1 :(得分:0)

您可以使用Gson将Json解析为Java对象。 这是一个例子。

首先,您需要创建一个包装RequestResponse对象的类。

public class RootWrapper {

    private Request request;
    private Response response;

    // Getters && Setters
}

Request很简单。

import com.google.gson.annotations.SerializedName;

public class Request {

    @SerializedName("Target")
    private String target;

    @SerializedName("Format")
    private String format;

    @SerializedName("Service")
    private String service;

    @SerializedName("Version")
    private String version;

    // Getters && Setters
}

这里是Response。您必须使用Map来保留&#34; 44&#34;和&#34; 22&#34;。

import java.util.Map;

public class Response {
    private int status;
    private int httpStatus;
    private Map<String, OfferWrapper> data;

    // Getters && Setters
}

由于Offer对象包装在另一个对象中,因此必须使用包装器对象。

import com.google.gson.annotations.SerializedName;

public class OfferWrapper {

    @SerializedName("Offer")
    private Offer offer;

    // Getters && Setters
}

您的Offer对象应该如下所示

public class Offer {

    private String id;
    private String name;
    private String description;
    private String url;
    private String url2;

    // Getters && Setters
}

最后,您可以将给定的Json转换为java对象。

final Gson gson = new GsonBuilder().create();
final RootWrapper rootWrapper = gson.fromJson(TEST_JSON, RootWrapper.class);

顺便说一句,你的json无效。 url2标记末尾有不必要的逗号。