Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中操作嵌套的Json数据进行反嵌套_Java_Json_Gson - Fatal编程技术网

如何在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
格式。