2012-02-03 78 views
3

我面臨的問題是,使用JSON傳遞一個對象到C#和C#傳遞一個字符串回到Java然後Java反序列化到一個地圖 順便說一句.net版本3.5JSON:什麼是在C#中的java地圖等效物

這裏的問題是

java的地圖JSON字符串的格式如下:

{"key1":"value1","key2":"value2"} 

但在C#中,字典seralized到

[{"Key":"key1","Value":"value1"},{"Key":"key2","Value":"value2"}] 

我只是想找到一個方法來做到這一點:

  1. 爲Java地圖JSON格式,C#可以deseralize它
  2. 爲C#,找到一種方法,它seralize到Java理解的格式

感謝

+2

哪個串行您使用的? JavaScriptSerializer或DataContractJsonSerializer? (或第三方序列化程序) – 2012-02-03 22:16:42

回答

4

嘗試使用JavaScriptSerializer而不是DataContractJsonSerializer

var dict = new Dictionary<string, string> 
{ 
    { "key1", "value1" }, 
    { "key2", "value2" } 
}; 
var jss = new JavaScriptSerializer(); 
string json = jss.Serialize(dict); // {"key1":"value1","key2":"value2"} 
+0

是的,我正在使用DataContractJsonSerializer – Leon 2012-02-03 22:33:12

-1

我寫了一個擴展方法字典把它序列化到JSON:

public static string SerializeToJson(this IDictionary<string, object> dict) 
{ 
    var sb = new StringBuilder(); 

    sb.Append("{"); 

    foreach (string key in dict.Keys) 
    { 
    sb.AppendFormat("\"{0}\": \"{1}\"", key, dict[key]); 
    sb.Append(key != dict.Keys.Last() ? ", " : String.Empty); 
    } 

    sb.Append("}"); 

    return sb.ToString(); 
} 

所以你可以這樣寫:

var jsonString = myDict.SerializeToJson(); 
+2

如果'dict [key]'包含'''或者更糟糕的是'haha「,」key666「:」value666' – 2012-02-03 22:48:44

相關問題