JSON: что такое эквивалент Java-карты в C # - PullRequest
4 голосов
/ 04 февраля 2012

Я сталкиваюсь с проблемой, что с помощью JSON для передачи объекта в C # и C # передать строку обратно в Java, а затем java десериализовать ее в Map BTW, версия .net составляет 3,5

Вотпроблема

строка JSON карты Java имеет следующий формат:

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

, но в C # словарь разделен на

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

Я просто хочу найти способДля этого:

  1. для формата JSON Java-карты, C # может его десерализовать
  2. для C #, найти способ выделить его в понятный Java-формат

Спасибо

Ответы [ 2 ]

5 голосов
/ 04 февраля 2012

Попробуйте использовать 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 голосов
/ 04 февраля 2012

Я написал метод расширения для 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...