2017-02-13 5 views
-7

Как выбрать идентификатор в тесте из строки JSON ниже с C#?Как читать эту строку JSON?

{ 
    "Test": [ 
    "Hello", 
    { 
     "Id": 5 
    } 
    ] 
} 

Это, как я могу прочитать содержимое внутри текста, но я не могу получить доступ к Id, делая то же самое.

var test = JObject.Parse(MyJsonString)["Test"]; 
+1

Что бы «то же самое» быть? '[ "Test"] [1] [ "Id"]'? – Ryan

+0

и когда вы отлаживаете тестовую переменную, что вы видите? – BugFinder

+0

@Ryan Спасибо, что работает. Но что делает [1] между ["Test"] и ["Id"]? Я пробовал раньше, чем [1] в середине, но это не сработало. Разум объясняет? – Muppen

ответ

-1

Чистый способ справиться с JSON в C# является использование классов, которые представляют собой структуру JSON и анализировать JSON в них. Например, вы можете использовать json2csharp для генерации этих классов. Давайте предположим, что вы сгенерировали класс Test как цель синтаксического анализа:

using Newtonsoft.Json; 
private static readonly JsonSerializerSettings StrictJsonSettings = new JsonSerializerSettings { 
    MissingMemberHandling = MissingMemberHandling.Error 
}; 
Test test = JsonConvert.DeserializeObject<Test>(MyJsonString, StrictJsonSettings); 
var jsonId = test[1].Id; 

Hacky способом является бросить результат как dynamic:

var parsedJson = JObject.Parse(MyJsonString) as dynamic; 
var jsonId = parsedJson.Test[1].Id; 
Смежные вопросы