JSON:c#中的java Map等价物是什么

时间:2012-02-03 22:15:01

标签: c# java json serialization map

我遇到的问题是使用JSON将对象传递给C#并且C#将字符串传递回Java,然后java将其反序列化为Map 顺便说一句,.net版本是3.5

这是问题

java map JSON字符串采用以下格式:

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

但在C#中,字典被分解为

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

我只想找到一种方法:

  1. 对于java Map JSON格式,C#可以对其进行解除分类
  2. 对于C#,找到一种方法将其分解为java可理解的格式
  3. 由于

2 个答案:

答案 0 :(得分:5)

尝试使用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"}

答案 1 :(得分:-1)

我为Dictionary编写了一个扩展方法,将其序列化为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();