Мне нужно извлечь часть json-string, используя .net или newtonsoft json.C# Parse/Deserialize JSON частично с Newtonsoft
JSON:
var json = "{\"method\":\"subtract\",\"parameters\":{\"minuend\":\"SOME_CUSTOM_JSON_OBJECT_DIFFERENT_FOR_EACH_METHOD\",\"subtrahend\":23}}";
C# Класс:
class MyJson{
public string method { get; set; }
//public string parameters {get; set;}
public object parameters {get; set;}
}
- мне не нужно разбирать все дети "параметров" JSon-объекта. «параметры» могут быть очень большим объектом ([{obj1} ... {obj1000}], objX из 1000 полей), синтаксический анализ, который не был бы выполнен. Я хотел бы, например, передать его точно так же, как в какой-то момент, поэтому преобразование «string-C# object-string» было бы излишним.
- Я не хочу использовать Regexp или строковые преобразования (string.Substring, Split и co), из-за поля ошибки, я знаю, что на всех строковых преобразованиях .net и newtonsoft.
Вопрос 1: если я определяю свойство типа «объект», как это будет обрабатывать newtonsoft? (Документация хуже, чем msdn, поэтому я ищу информацию от вас, кто уже пробовал это).
static void Main(string[] args)
{
var json = "{\"method\":\"subtract\",\"parameters\":{\"minuend\":42,\"subtrahend\":23}}";
var data = JsonConvert.DeserializeObject<MyJson>(j);
// what internal representaion of data.parameters?
// How is it actually converted from json-string to an C# object (JObject/JsonObject).
}
В идеальном случае: "параметры" является строкой и вызов
ExtractMyJson(jsonString)
дает мне JSon строку параметров.
В основном мне нужна версия newtonsoft из
string ExtractMyJson(jsonString){
var p1 = jsonString.Split(",");
// .. varios string transformations
return pParams;
}
Примечание: пожалуйста, не ссылаться на «динамический» ключевое слово или спросить, почему нет строковые преобразования, это не очень конкретный вопрос.
Вопрос в том, насколько велики будут параметры в худшем случае? Это действительно проблема? JSON.NET довольно быстро, и эта оптимизация, о которой вы думаете, может вообще не стоить. – Wapac
Параметры: [{obj1} ... {obj1000}], objX из 1000 полей –