如何在java中操作嵌套的Json数据进行反嵌套
我一直在寻找这个问题的解决方案,但找不到一个这样问这个问题的解决方案。如何在java中操作嵌套的Json数据进行反嵌套,java,json,gson,Java,Json,Gson,我一直在寻找这个问题的解决方案,但找不到一个这样问这个问题的解决方案。 我有一些像这样的数据 { "data": [ { "id": "5ab892c71810e201e81b9d39", "isSignedUpUsingFb": false, "personalInformation": { "firstName": "jio",
我有一些像这样的数据
{
"data": [
{
"id": "5ab892c71810e201e81b9d39",
"isSignedUpUsingFb": false,
"personalInformation": {
"firstName": "jio",
"lastName": "g",
"mobileNumber": "1234567890",
},
"accountBalance": 0,
}
]
},
我想编写一个java代码,将数据结构更改为
{
"data": [
{
"id": "5ab892c71810e201e81b9d39",
"isSignedUpUsingFb": false,
"personalInformation_firstName":"jio",
"personalInformation_lastNAme":"g",
"personalInformation_mobileNumber":"1234567890",
"accountBalance": 0,
}
]
},
我从db获得的数据如下:
@Override
public List<User> getAllUsers() {
logger.debug("entering all users method");
List<User> allUsers=mongoOperations.findAll(User.class);
for (User user : allUsers) {
PersonalInformation info=user.getPersonalInformation());
//manipulation code here
user.setPersonalInformation(info);
}
return allUsers;
}
@覆盖
公共列表getAllUsers(){
调试(“输入所有用户方法”);
List alluser=mongoOperations.findAll(User.class);
用于(用户:allUsers){
PersonalInformation=user.getPersonalInformation());
//这里的操作代码
user.setPersonalInformation(信息);
}
回归诱惑;
}
所以我想写一个逻辑,这样我就可以将数据转换成所需的格式并发送一个返回类型。我知道如何使用J query做同样的事情,但我想在后端做,所以上面的任何代码或任何链接都会有帮助。有多种可能的解决方案。正如Prabhav所提到的,最直观的方法是创建一个新类,并从中创建一个可以通过库转换为JSON的对象 备选案文一: 新类看起来像您想要的数据结构,访问权限如下:
PersonalInformationJson pf = new PersonalInformationJson();
pf.setFirstName = info.getPersonalInformation_firstName
//... setting the rest of the object
//using jackson
ObjectMapper mapper = new ObjectMapper();
try {
// convert user object to json string and return it
String jsonString = mapper.writeValueAsString(u);
}
另一个更容易创建字符串的版本(每只手或使用库):
// using org.json.JSONObject
String jsonString = new JSONObject().put("personalInformation_firstName", info.value())
.put("personalInformation_lastNAme", info.value());
我有一个非常简单的解决方案,所以,当我们为嵌套数据创建对象时,基本上是这样在JAVA中创建的
public MyClass{
public String name;
public String contact;
public PersonalInformation personalinformation;
//setters and getter here
}
这将为我提供以下数据:
"MyClass":{
"name": "abc",
"contact": "12345",
"personalInformation":{
"address": "asdasdasdad",
"city":"asdadad",
"pin": "asdfg",
}
}
因此,要删除这个嵌套数据,我们需要使用@JsonUnwrapped
,它删除所有嵌套对象并将其添加到主对象中
public MyClass{
public String name;
public String contact;
@JsonUnwrapped
public PersonalInformation personalinformation;
//setters and getter here
}
这将改变数据结构,如下所示:
"MyClass":{
"name": "abc",
"contact": "12345",
"address": "asdasdasdad",
"city":"asdadad",
"pin": "asdfg",
}
有关更多参考信息,请查看此链接希望这能有所帮助。创建新的数组对象“data”,并向其中添加所有必需的对。您能给我一些示例吗?基本上,您希望将
JSON
数据从一种格式转换为另一种格式。但是在从数据库检索数据的代码片段中,我看到getPersonalInformation()
返回PersonalInformation
的对象。你能展示它的Java文件吗?另外,您是否编写了将PersonalInformation
转换为JSON
格式的代码?这是一个java pojo文件,只有setters和getters属性,然后只需创建另一个pojo类,并使用PersonalInformation
类的getters设置其值,最后将其转换为JSON
格式。