kas*_*ere 10 java json jackson
我想从移动org.json到org.codehaus.jackson.如何转换以下Java代码?
private JSONObject myJsonMessage(String message){
JSONObject obj = new JSONObject();
obj.put("message",message);
return obj;
}
Run Code Online (Sandbox Code Playgroud)
try-catch为简单起见,我遗漏了这个街区.
Joã*_*lva 19
而不是JSONObject使用杰克逊ObjectMapper和ObjectNode:
ObjectMapper mapper = new ObjectMapper();
ObjectNode node = mapper.createObjectNode();
node.put("message", "text");
Run Code Online (Sandbox Code Playgroud)
这将是杰克逊相当于您当前的org.json代码.
然而,杰克逊真正擅长的是它能够在你的Java类(POJO)和它们的JSON表示之间进行复杂映射,以及它的流API,它允许你进行真正快速的序列化,至少与org.json同行相比.
JSONObjectJackson api中没有.JSONObject您可以返回一个Map或Java Bean,而不是返回一个具有getter和setter的message属性.
public class MyMessage {
private String message;
public void setMessage(final String message) {
this.message = message;
}
public String getMessage() {
return this.message;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您的方法将简化为:
private MyMessage(String message) {
MyMessage myMessage = new MyMessage();
myMessage.setMessage(message);
return myMessage;
}
Run Code Online (Sandbox Code Playgroud)
此更改的另一个方面是更改序列化代码,将MyMessage转换回json字符串.杰克逊做Java Bean,默认地图,你不需要创建JSONObject例如,
private String serializeMessage(MyMessage message){
//Note: you probably want to put it in a global converter and share the object mapper
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(message);
}
Run Code Online (Sandbox Code Playgroud)
以上将返回 {message: "some message"}
为简洁起见,我跳过了例外情况.
| 归档时间: |
|
| 查看次数: |
20820 次 |
| 最近记录: |