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

あなたの文字列は JSON ではありません。これは、JSON に似たものです。これらの引用符をオプションにする JSON の形式はありません。私の知る限り、文字列を読み取り、欠落している引用符に対処してから正しく吐き出すライブラリはありません。これを生成したコードを見つけて修復し、実際の JSON を生成する必要があります。

于 2012-06-20T10:19:00.090 に答える
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 に答える
0

Java で単純な JSON パーサーおよびジェネレーターであるargoを使用できます。

于 2012-06-20T01:52:17.800 に答える