2012-11-04 35 views
1

我有兩個JSON格式字符串如何將兩個JSON格式的Java字符串添加到一起?

{"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是由Eclipse IDE中

格式化這是我的程序:

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={}} 

請讓我知道我可以添加兩個JSON字符串?

+0

'B'已經包含'A'的所有內容,那麼爲什麼要連接它呢? – shyam

+3

你想讓輸出看起來像什麼? – BobS

回答

5

在頂層,JSON文檔始終是一個單一對象陣列,或。通過將兩個字符串連接在一起,就違反了這個原則。一個簡單的解決方法是在陣列中的兩個值連接在一起:

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

,然後分析此。或者您可以簡單地解析每個JSON文檔,然後追加或合併您的結果(我懷疑你想合併它們,通過Map.putAll)。

鑑於您的userN密鑰的值爲空,您的JsonHelper類中可能有一個錯誤,但很難說沒有看到代碼。

相關問題