java-код, соответствующий Newtonsoft.Json.JsonConvert.SerializeObject(источник объекта,Newtonsoft.Json.JsonSerializerSettings()) в .net?

#java #.net #json #serialization #blackberry

#java #.net #json #сериализация #ежевика

Вопрос:

У меня есть код в .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-код, соответствующий этой части, но он не работает.

Комментарии:

1. Какую библиотеку JSON вы используете с Java?

2. @AndyT: в blackberry jre один файл jar является there..net_rim_api.jar .. я использую библиотеку json по умолчанию внутри этого jar..

Ответ №1:

Насколько я понимаю, сериализатор 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 предполагала, что ваш объект является точной структурой данных, которые вы хотите вывести.

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

Ответ №2:

Если ваш вопрос «Знает ли кто-нибудь Java-эквивалент Newtonsoft.Json для .СЕТЬ для сериализации в формате JSON?»

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