1

2つのJSON形式の文字列があります

 {"user1":{"Iden":4,"nID":1},"user2":{"Iden":5,"nID":1}} // String A JSON 

 {"user1":{"Iden":4,"nID":1},"user3":{"Iden":6,"nID":1},"user2":{"Iden":5,"nID":1}}  

以下のプログラムでは、これらの上記のJSONはEclipseIDEによってフォーマットされています

これは私のプログラムです:

import java.util.Map;

import org.codehaus.jackson.type.TypeReference;

import com.tradeking.at.util.JsonHelper;

public class Hi {
    private static JsonHelper jsonHelper = JsonHelper.getInstance();

    public static void main(String[] args) throws Exception {

        Map<String, Tracker> totalCusts = null;

        String A = "{\"user1\":{\"Iden\":4,\"nID\":1},\"user2\":{\"Iden\":5,\"nID\":1}}";
        String B = "{\"user1\":{\"Iden\":4,\"nID\":1},\"user3\":{\"Iden\":6,\"nID\":1},\"user2\":{\"Iden\":5,\"nID\":1}}";

        String totalString =  A+B;

        if (null != totalString) {
            totalCusts = (Map<String, Tracker>) jsonHelper.toObject(
                    totalString, new TypeReference<Map<String, Tracker>>() {
                    });

        }

        System.out.println(totalCusts);

    }

}

Tracker.java:

import org.json.JSONObject;

public class Tracker extends JSONObject{

}

上記を実行すると、出力は

{user1={}, user2={}}

これを使用する場合:

String totalString =  B + A ;

O/pは次のとおりです。

{user1={}, user3={}, user2={}}

2つのJSON文字列を追加する方法を教えてください。

4

1 に答える 1

5

トップレベルでは、JSONドキュメントは常に単一のオブジェクト配列、またはです。2つの文字列を連結するだけで、この原則に違反することになります。簡単な回避策は、2つの値を配列で結合することです。

String totalString =  "[" + A + ", " + B + "]";

そして、そのように解析します。または、各JSONドキュメントを一度に1つずつ解析してから、結果を追加またはマージすることもできます(を介して、それらをマージしたいと思いますMap.putAll)。

キーの値が空であることを考えると、userNおそらくJsonHelperクラスにバグがありますが、コードを見ずにそれを言うのは難しいです。

于 2012-11-04T19:00:13.890 に答える