gpt4 book ai didi

java - 使用嵌套类映射 Json 字符串

转载 作者:行者123 更新时间:2023-12-01 11:40:55 24 4
gpt4 key购买 nike

我从 MongoDB 中提取了以下 JSON 字符串:

{ "_id" : { "$oid" : "552645a5d3d57a6fc594c3c6"} , "name" : "mark" , 
"Info" : { "age" : 18 , "email" : "mark@gmail.com" , "phone" : "321-456-778"}}

我正在尝试将上面的 JSON 映射到以下类:

public class User {

String name;
Info info;

// Getters/Setters
public User(String name, int age, String email, String phone) {
this.name = name;
this.info = new Info(age, email, phone);
}


static class Info{

public Info(int age, String email, String phone) {
super();
this.email = email;
this.phone = phone;
this.age = age;
}

public Info( ) {
}

String email;
String phone;
int age;
// Getters/Setters

}
}

通过使用GsonfromJson方法:

Gson gson = new Gson();
User u = gson.fromJson(jsonString, User.class);

生成的User 附加了一个空的Info。知道如何修复它吗?

最佳答案

问题出在 Json 中。实际上这个Json遵循的是混合命名策略。

“info”对象采用驼峰式大小写,其他对象采用小写形式。这就是为什么gson很难将其转换为Object。

如果您可以将所有键转换为较低的键,那么您的代码就可以正常工作。如果您希望所有 key 都采用驼峰式大小写,那么您可以使用 GsonBuilder 来配置命名策略。

例如:

GsonBuilder builder=new GsonBuilder();

builder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE);

Gson g=builder.create();

但对于您的情况,一个简单的解决方法是将信息对象转换为小写,即您转换后的 json 将是:

{ "_id" : { "$oid" : "552645a5d3d57a6fc594c3c6"} , "name" : "mark" , 
"info" : { "age" : 18 , "email" : "mark@gmail.com" , "phone" : "321-456-778"}}

关于java - 使用嵌套类映射 Json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29535570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com