5

我有一个球衣客户端,它从我需要进入格式正确的 JSON 的源获取 JSON:

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

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

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

4

4 回答 4

5

你可以使用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);

当然,您只需调用即可获取 JSON 字符串properties.toString()

于 2012-06-20T01:56:56.143 回答
3

我喜欢Flexjson,并且使用了很多初始化程序:

  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"
        }
    }
  ]
}
于 2012-06-20T02:00:20.927 回答
3

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

于 2012-06-20T10:19:00.090 回答
0

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

于 2012-06-20T01:52:17.800 回答