2016-02-06 3 views
7

я следующая проблема: У меня есть файл в формате JSON, который выглядит как этотDeserialize JSON с Json.NET в C# динамический

{ 
    "Path": { 
     "FirstPath": "/1/2/text()" 
    } 
} 

Если я разобрать этот JSON-файл с Newtonsoft как этот

dynamic dyn = JObject.Parse(json); 

или это

dynamic dyn = JsonConvert.DeserializeObject(json); 

Я получаю динамический объект, который должен быть использован как этот

dyn.Path.FirstPath.Value 

Как я могу избавиться от ценности? Все мои объекты в JSON в конечном итоге являются строкой. Я не хочу всегда писать «.Value» в конце, если это не обязательно.

ответ

11

Я тестировал это с помощью Newtonsoft 8.0.2, и он отлично работает.

 dynamic dyn = JObject.Parse(json); 

     string value = dyn.Path.FirstPath; 

Значение должно быть /1/2/text().

+0

Да, но если вы посмотрите поближе, вы увидите, что «значение» не является строкой из «Newtonsoft.Json.Linq.JValue». Если вы берете «значение» и передаете его методу, который ожидает строку, вы получите исключение. Он работает, только если вы напишите «value.Value». – Shamshiel

+0

Затем замените «var» на «string». Я обновил свой ответ. –