将此JSON数据转换为Java中的对象列表
我的输入是JSON数据。它看起来像:将此JSON数据转换为Java中的对象列表,java,json,jackson,Java,Json,Jackson,我的输入是JSON数据。它看起来像: [ { "shortName": "av", "longName": "average", "Color": "black", "fromValue": "45", "toValue": "59" }, { "shortName": "g", "longName": "good", "Color": "red
[
{
"shortName": "av",
"longName": "average",
"Color": "black",
"fromValue": "45",
"toValue": "59"
},
{
"shortName": "g",
"longName": "good",
"Color": "red",
"fromValue": "35",
"toValue": "68"
}
]
我需要将此数据转换为对象列表(
PerfLevel
class)。我该怎么做呢?只需使用org.json.*包
您可以在JSONArray下查找它,JSONObject将是最有趣的代码片段
此外,您的JSON对象的格式也不是很好,您应该首先创建一个对象数组,如:
users : [{
"shortname" : "g",
"moreAttributes" : ""
}, {
"shortname" : "h",
"moreAttributes" : ""
}]
使用此数组结构,可以在数组外部添加对象信息。例如,一条错误消息
现在,您可以使用一些简单的方法访问json文件:
JSONObject jObj = //the json file you loaded
JSONArray jArr = jObj.getArray("users");
JSONObject jUser;
//at this point you can iterate over your array and get information via:
jUser = jArr.getJSONObject(1)
//now you can get all the information from the jUser object
//e.g.
jUser.getString("shortname");
使用或将JSON读取为列表
或预期类型的数组。
与杰克逊一起:
ObjectMapper mapper=新建ObjectMapper();//如果有多个调用,则重用
MyPOJO[]pojo=mapper.readValue(jsonSource,MyPOJO[].class);//对于'List',需要使用'TypeReference'`
//或者,如果您没有匹配的MyPOJO类型:
List-pojosasmap=mapper.readValue(jsonSource,List.class);
还有很多其他方法可以做到这一点,比如读取JSON树(JsonNode
)。
这一切都取决于您是否可以轻松地将结构建模为Java类(如果可以的话,这是最方便的)。。。