我有以下示例对象:
{
"manufacturer": "bla",
"model": "5901",
"metadata": {
"CommercialName" : "bla bla",
"Intername Name" : "bla bla"
},
"features": [
"a"
],
"profiles": 1
}
我希望存储以下元数据部分而不直接将其解析为Postgres SQL" jsob"类型。
"metadata": {
"CommercialName" : "bla bla",
"Intername Name" : "bla bla"
},
DTO课程现在如下所示。
JsonInclude(JsonInclude.Include.NON_NULL)
public class device {
private Long id;
private String manufacturer;
private String model;
private Integer profiles;
private String metadata;
private List<String> feature;
+all the gettors/settors
}
但是,我收到了一个错误。我不知道如何表示&#34;元数据&#34; (理论上可以包含任何客户端特定的JSON对象),而没有单独的对象。
答案 0 :(得分:0)
您可以使用org.json.JSONObject来表示元数据,而不是使用字符串。 然后在JSONObject上使用toString()来获取JSON文本。
https://stleary.github.io/JSON-java/org/json/JSONObject.html
我正在添加控制器的代码段。
@RestController
public class DeviceController {
@RequestMapping(value="/add/device", method=RequestMethod.POST, produces={MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<String> postDeviceData(@RequestBody Device device) {
// The device object will be filled with data sent from Http request
return new ResponseEntity<>("Done", HttpStatus.OK);
}
}
答案 1 :(得分:0)
因此我的问题的解决方案来自一个提示形式&#34; Hitobat&#34;谁建议使用Map<String,String>
,我稍微改为Map<?,?>
现在我看到我得到了数据,即使我传递了更精细的jSON对象。
谢谢!
{
"manufacturer": "dada",
"model": "kaka",
"metadata": {
"CommercialName" : "a3 sf",
"Internalname Name" : "asdf",
"timbacktu" : {
"bumdarabu" : 345,
"aadfsq" : 2.3
}
},
"features": [
"asdfsd"
],
"profiles": 1
}
DTO课程
@JsonInclude(JsonInclude.Include.NON_NULL)
public class device {
private Long id;
private String manufacturer;
private String model;
private Integer profiles;
private Map<?,?> metadata;
private List<String> features;
}