从 POJO 创建 JSONObject

2022-09-01 15:06:05

我创建了一个简单的POJO:

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

    // getters, setters
}

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

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

The constructor JSONObject(LoginPojo) is undefined

我找到了另一个解决方案:

JSONObject loginJson = new JSONObject();
loginJson.append(loginPojo);

但是这种方法并不存在。

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


答案 1

只需使用java Gson API

Gson gson = new GsonBuilder().create();
String json = gson.toJson(obj);// obj is your object 

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

JSONObject jsonObj = new JSONObject(json);

请查看Gson用户指南和这个简单的GSON示例以获取更多信息。


答案 2

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

您必须添加 ,库以在项目中进行配置。jackson-core-asl-x.x.x.jarjackson-mapper-asl-x.x.x.jarJackson

修改代码 :

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"}