Java-код, соответствующий Newtonsoft.Json.JsonConvert.SerializeObject (источник объекта, Newtonsoft.Json.JsonSerializerSettings ()) в .net? - PullRequest
1 голос
/ 11 апреля 2011

У меня есть код в .net, который сериализует запрос в формате json ... Код выглядит примерно так.

  var ops = new Newtonsoft.Json.JsonSerializerSettings();
  ops.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
  ops.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
  ops.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore;
  ops.Converters.Add(new Newtonsoft.Json.Converters.JavaScriptDateTimeConverter());

  String strSO = Newtonsoft.Json.JsonConvert.SerializeObject(source,
  bIndent ? Newtonsoft.Json.Formatting.Indented : Newtonsoft.Json.Formatting.None,
  ops);

Я пробовал Java-код, соответствующий этой части, но он не 'т работа.

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Насколько я понимаю, сериализатор Newtonsoft берет объект с переменными-членами и выводит строку json, которая представляет этот объект.

Так что вы можете сделать что-то вроде:

Product product = new Product();

product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };

string output = JsonConvert.SerializeObject(product);

И вы получите строку вывода вроде:

{"Name": "Apple",
"Expiry": "\/Date(1230375600000+1300)\/",
"Price": 3.99,
"Sizes": ["Small", "Medium", "Large"]
}

Теперь плохая новость заключается в том, что используемая вами библиотека BlackBerry не использует рефлексию для проверки структуры объектов, которые она сериализует. Это форматтер, а не сериализатор.

Хорошая новость заключается в том, что им довольно легко пользоваться. Документация здесь:

http://www.blackberry.com/developers/docs/6.0.0api/org/json/me/package-summary.html

Короче говоря, чтобы написать объект, такой как приведенный выше, вы должны сделать что-то вроде:

 myString = new JSONStringer()
 .object()
     .key("Name")
     .value("Apple")
     .key("Expiry")
     .value("Date("+myDate.getTime()+")")
 .endObject()
 .toString();

.. и так далее. Обратите внимание, что вы строите элемент структуры JSON по элементам, вместо того, чтобы библиотека JSON предполагала, что ваш объект является точной структурой данных, которые вы хотите вывести.

Надеюсь, это даст вам представление о том, как действовать.

0 голосов
/ 11 апреля 2011

Если ваш вопрос: «Кто-нибудь знает Java, эквивалентный Newtonsoft.Json for .NET для сериализации в формате JSON?»

Проверьте нижнюю часть http://json.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...