从POJO创建JSONObject

Mul*_*ard 17 java json

我创建了一个简单的POJO:

public class LoginPojo {
    private String login_request = null;
    private String email = null;
    private String password = null;

    // getters, setters
}
Run Code Online (Sandbox Code Playgroud)

经过一番搜索,我发现了这个: JSONObject jsonObj = new JSONObject( loginPojo );

但是有了这个,我得到了错误:

The constructor JSONObject(LoginPojo) is undefined
Run Code Online (Sandbox Code Playgroud)

我找到了另一个解决方

JSONObject loginJson = new JSONObject();
loginJson.append(loginPojo);
Run Code Online (Sandbox Code Playgroud)

但这种方法不存在.

那么如何将我的POJO转换为JSON?

cнŝ*_*ŝdk 33

只需使用java Gson API:

Gson gson = new GsonBuilder().create();
String json = gson.toJson(obj);// obj is your object 
Run Code Online (Sandbox Code Playgroud)

然后你可以JSONObject从这个json 创建一个String,像这样:

JSONObject jsonObj = new JSONObject(json);
Run Code Online (Sandbox Code Playgroud)

看看GSON用户指南,这SIMPLE GSON实例的详细信息.

  • 作者要求将POJO转换为JSONObject类型,而不是使用gson键入(json)String.从狭义上讲,这并没有回答这个问题. (9认同)

ati*_*mpi 5

Jackson提供 JSON 解析器/JSON 生成器作为基础构建块;并添加了一个强大的数据绑定器 (JSON<->POJO) 和树模型作为可选的附加块。这意味着您可以将 JSON 作为令牌流(流 API)、普通旧 Java 对象(PO​​JO、数据绑定)或树(树模型)读取和写入。更多参考

你必须添加jackson-core-asl-x.x.x.jarjackson-mapper-asl-x.x.x.jar库来配置Jackson你的项目。

修改后的代码:

LoginPojo loginPojo = new LoginPojo();
ObjectMapper mapper = new ObjectMapper();

try {
    mapper.setVisibility(JsonMethod.FIELD, Visibility.ANY);

    // Setting values to POJO
    loginPojo.setEmail("a@a.com");
    loginPojo.setLogin_request("abc");
    loginPojo.setPassword("abc");

    // Convert user object to json string
    String jsonString = mapper.writeValueAsString(loginPojo);

    // Display to console
    System.out.println(jsonString);

} catch (JsonGenerationException e){
    e.printStackTrace();
} catch (JsonMappingException e){
    e.printStackTrace();
} catch (IOException e){
    e.printStackTrace();
}

Output : 
{"login_request":"abc","email":"a@a.com","password":"abc"}
Run Code Online (Sandbox Code Playgroud)


Gan*_*nus 5

可以从 POJO 获取(gson)JsonObject:

JsonElement element = gson.toJsonTree(userNested);
JsonObject object = element.getAsJsonObject();
Run Code Online (Sandbox Code Playgroud)

之后,您可以object.entrySet()查看并查看所有树。

这是 GSON 中唯一一种完全免费的方式来动态设置您想要查看的字段。