使用jackson spring API解析嵌套json
我能够用ObjectMapper
类解析嵌套的json字符串。这里的问题是解析嵌套的json变得越来越困难,因为我必须编写大量样板代码来实现将json解析为java对象的最终结果。除了这种方法,spring中还有更好的解析方法吗
域类:
组件类
public class Components {
private String name;
private String url;
private List<Properties> properties;
// getters and setters
}
属性类别:
public class Properties {
private String name;
private String value;
private boolean exclusions;
// getters and setters
}
控制器类:
@RestController
public class TempController {
String jsonResponse = null;
@RequestMapping("/")
public @ResponseBody String getResponse(){
JsonreadApplication ja = new JsonreadApplication();
jsonResponse = ja.readJsonFile();
//System.out.println(jsonResponse);
return jsonResponse;
}
@RequestMapping("/temp")
public @ResponseBody String getTempByServerType(String jsonResponse){
jsonResponse = getResponse();
Components components = new Components();
ObjectMapper objectMapper = new ObjectMapper();
try {
Iterator<Entry<String, JsonNode>> fieldNames = objectMapper.readTree(jsonResponse).fields();
while(fieldNames.hasNext()){
System.out.println(fieldNames.next());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "I've parsed json!";
}
}
json文件:
{
"name": "CatalogTools",
"url": "/atg/commerce/catalog/CatalogTools/",
"properties": [
{
"name": "queryASAFFabrics",
"value": "skuType=\"ASAF_FABRIC\" AND NOT basicColor IS NULL ORDER BY dynamicAttributes.fabricpriceband, basicColor, dynamicAttributes.fabrictype, dynamicAttributes.asafpattern, dynamicAttributes.asaffabricbrand",
"exclusions": "false"
},
{
"name": "loggingDebug",
"value": "true",
"exclusions": "false"
}
]
}
如前所述,可以使用ObjectMapper
实例进行解析,但需要使用大量样板代码和硬编码json元素名称。有更好的方法吗?我正在使用jackson
库解析json文件
我在网上提到了许多链接,其中@RequestBody
注释用于HTTP POST
操作。这里,它是一个HTTP GET
请求
非常感谢您的帮助
非常感谢
# 1 楼答案
您可以使用jsonchema2pojo
将json的示例放在这里,将“Source Type”设置为json,将Annotation style选择为Jackson 2。x或1。然后点击“Zip”。瞧,整个模型都生成了