如何在java中正确格式化JSON字符串?

如何在java中正确格式化JSON字符串?,java,json,Java,Json,我有一个jersey客户端,它从一个源获取JSON,我需要将该源转换为正确格式的JSON: 通过http请求获取JSON字符串时,我的JSON字符串如下所示: { "properties": [ { someproperty: "aproperty", set of data: { keyA: "SomeValueA", keyB: "SomeValueB",

我有一个jersey客户端,它从一个源获取JSON,我需要将该源转换为正确格式的JSON:

通过http请求获取JSON字符串时,我的JSON字符串如下所示:

{
    "properties": [
        {
            someproperty: "aproperty",
            set of data: {
                keyA: "SomeValueA",
                keyB: "SomeValueB",
                keyC: "SomeValueC"
            }
        }
    ]
}
我遇到了一些问题,因为json必须正确格式化,并且keyA、keB和keyC没有用引号括起来。是否有一些库可以帮助添加引号,或者有一些最好的方法可以将这个字符串转换为格式正确的json?或者,如果有一种简单的方法可以将其转换为json对象,而无需编写一组具有与传入结构匹配的变量和列表的类?

您可以使用Java中的简单json解析器和生成器。非常方便!您可以这样构造json字符串:

JSONObject dataSet = new JSONObject();
dataSet.put("keyA", "SomeValueA") ;
dataSet.put("keyB", "SomeValueB") ;
dataSet.put("keyC", "SomeValueC") ;

JSONObject someProperty = new JSONObject();
dataSet.put("someproperty", "aproperty") ;

JSONArray properties = new JSONArray();
properties.add(dataSet);
properties.add(someProperty);
当然,您只需调用
properties.toString()

我喜欢,并使用以下命令即可获得JSON字符串:


您的字符串不是JSON。它与JSON有相似之处。没有任何形式的JSON使这些引号成为可选的。顺便说一句,没有一个库可以读取您的字符串并处理丢失的引号,然后正确地将其吐出。您需要找到生成此代码的代码,并修复它以生成实际的JSON。

想了解如何将类似字符串转换为JSON的示例。据我所知,Jackson需要正确格式化JSON字符串(即所有键都需要在键周围加双引号),我想将现有的JSON字符串转换为带双引号的格式正确的JSON字符串。try
JSONObject.fromObject(jsonString.toString
  public static void main(String[] args) {

    Map<String, Object> object = new HashMap<String, Object>() {
        {
            put("properties", new Object[] { new HashMap<String, Object>() {
                {
                    put("someproperty", "aproperty");
                    put("set of dada", new HashMap<String, Object>() {
                        {
                            put("keyA", "SomeValueA");
                            put("keyB", "SomeValueB");
                            put("keyC", "SomeValueC");
                        }
                    });
                }
            } });
        }
    };

    JSONSerializer json = new JSONSerializer();
    json.prettyPrint(true);
    System.out.println(json.deepSerialize(object));
  }
{
  "properties": [
    {
        "someproperty": "aproperty",
        "set of dada": {
            "keyA": "SomeValueA",
            "keyB": "SomeValueB",
            "keyC": "SomeValueC"
        }
    }
  ]
}