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

时间:2012-06-20 01:37:00

标签: java json

我有一个泽西客户端从我需要进入格式正确的JSON的源代码获取JSON:

我的JSON字符串在通过http请求抓取它时看起来像下面这样:

{
    "properties": [
        {
            someproperty: "aproperty",
            set of data: {
                keyA: "SomeValueA",
                keyB: "SomeValueB",
                keyC: "SomeValueC"
            }
        }
    ]
}

我遇到了问题,因为json必须格式正确,而keyA,keB和keyC不会被引号括起来。是否有一些库可以帮助添加引号或一些最好的方法来将此字符串转换为格式正确的json?或者,如果有一些简单的方法将它转换为json对象而不编写一堆具有与传入结构匹配的变量和列表的类?

4 个答案:

答案 0 :(得分:4)

您可以使用json-lib。这很方便!你可以像这样构建你的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字符串

答案 1 :(得分:3)

我喜欢Flexjson,并使用lots of initilizers

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

答案 2 :(得分:3)

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

答案 3 :(得分:0)

您可以使用argo,Java中的简单JSON解析器和生成器