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,
}
}
}
}
}
答案 0 :(得分:0)
'data'
定义为HashMap<String,String>
答案 1 :(得分:0)
您可以使用Gson将Json解析为Java对象。 这是一个例子。
首先,您需要创建一个包装Request
和Response
对象的类。
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
标记末尾有不必要的逗号。