1

我正在尝试使用 org.json.JSONObject 来构建以下目标 json 字符串:

{"und":[{"value":"some@one.com"}]} 

这是我的代码:

JSONObject und = new JSONObject();
und.accumulate("und", new JSONObject().put("value", "some@one.com"));   
System.out.println( und.toString() );

但它产生以下内容:

{"und":{"value":"some@one.com"}} 

如何生成目标 json 字符串?

谢谢并恭祝安康。

编辑

感谢 SLaks 的输入,下面是生成目标字符串的代码:

     JSONObject und = new JSONObject();
     JSONArray arr = new JSONArray();
     und.put("und", arr);
     arr.put(new JSONObject().put("value", "some@one.com"));
     System.out.println( und.toString() );
4

1 回答 1

1

您可能想看看 Jackson,它是 Java 上最有效和受支持的 JSON 库之一。

如果您熟悉解组/反序列化,则可以将 POJO 转换为 json,反之亦然。

@JsonSerialize(include = JsonSerialize.Inclusion.NON_DEFAULT)
public class SomeBean {
    Und[] und;
    // TODO: Getters and setters

    public static Und class {
        public String value;
        // TODO: Getters and setters 
    }
}

如果是直接解析 JSON 字符串或文件,可以使用 ObjectMapper 类

SomeBean someBean = new ObjectMapper().readValue("input goes here", SomeBean.class);

// If you want just a string you can pass in the String class
String json = new ObjectMapper().readValue("input", String.class);

如果 JSON 来自 Web 服务,请查看 Spring 的 restTemplate,它非常易于使用。

RestTemplate restTemplate = new RestTemplate();
SomeBean someBean = restTemplate.getForEntity("URI goes here", SomeBean.class);

String json = restTemplate.getForEntity("URI goes here", String.class);
于 2013-05-21T16:54:33.873 回答