有没有办法将嵌套的json对象映射到单个Java类? 例如,我有这个json字符串:
{
"order_id": 104,
"order_details" : [
{
"name": "Product#1",
"price": {
"usd": 12.95
}
}
]
}
我想用这个类映射:
public class Order{
Int id; // rename
String name; //map with order_details.name
float price; //map with order_details.price.usd
}
*更新: 对不起,问题不明确。我是Objective-C和Java的开发人员。当我在ObjC中使用JSONModel时,可以很容易地配置这样的映射:https://github.com/icanzilb/JSONModel#key-mapping
我讨厌使用getJSONObject()
,getString()
手动解析JSON,...我找到了一种配置方法,可以使用Gson
自动解析Java。
答案 0 :(得分:0)
Ofcourse。您可以使用 GSON 库来完成此操作。你需要创建2个pojo,而外面的那个可以有自定义模型。
答案 1 :(得分:0)
您可以尝试修改模型:
public class Order {
int id; // rename
String name; //map with order_details.name
float price; //map with order_details.price.usd
public void parce(String json) {
try {
JSONObject jsonObject = new JSONObject(json);
id = jsonObject.getInt("order_id");
name = jsonObject.getJSONArray("order_details").getJSONObject(0).getString("name");
price = (float) jsonObject.getJSONArray("order_details").getJSONObject(0).getJSONObject("price").getDouble("usd");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
使用此代码的示例:
Order order = new Order();
order.parce("{\"order_id\":104,\"order_details\":[{\"name\":\"Product#1\",\"price\":{\"usd\":12.95}}]}");
结果: