Member 13403784 Ответов: 2

Преобразование строки json в C#


{"@OData для.контекст":"http://192.168.0.126:49540/odata/$метаданных#Едм.Строки","значение":"китайцы стаи"}

Я хочу извлечь строку из приведенной выше строки Json, т. е. "Китайский стай", который содержится в переменной value

Что я уже пробовал:

я пробовал много вещей, но я получаю ошибку из-за символа @ в начале

2 Ответов

Рейтинг:
2

Graeme_Grant

Эта статья поможет вам: Работа с JSON в C# и VB[^] - JSON компании Newtonsoft.Сеть имеет JsonProperty атрибут - это позволит решить вашу проблему "@" без необходимости использования динамических классов. В статье также есть ряд полезных ссылок, некоторые из которых касаются того, как генерировать классы из данных JSON - JsonUtils-мой любимый.


Karthik_Mahalingam

5

Рейтинг:
14

Afzaal Ahmad Zeeshan

Вы должны рассмотреть синтаксический анализатор JSON и использовать его для преобразования этого документа JSON в объект времени выполнения, JSON.NET в данном случае это сработает. Json.NET - Newtonsoft[^]. Эти Парсеры будут правильно преобразовывать ваши документы, не беспокоясь о недопустимых данных (а если документ недействителен, то он вызовет исключение). Взгляните на валидатор схемы JSON, JSON Schema Validator - Newtonsoft[^], а затем попробуйте проанализировать это значение в любом онлайн-парсере JSON на основе JavaScript (JSON.parse()) и вы можете убедиться в этом сами. Вы используете свой собственный парсер сборки? Ниже приведен пример JavaScript для этого, Edit fiddle - JSFiddle[^]

(function() {
    alert(
    JSON.parse("{\"@odata.context\":\"http://192.168.0.126:49540/odata/$metadata#Edm.String\",\"value\":\"The Chinese Stai\"}")
    .value);
})();

Теперь что касается C#, то код для этого будет следующим,
// You need to use dynamic as type of returned object
// data is that string
dynamic obj = JsonConvert.DeserializeObject(data);

Console.WriteLine(obj.value); // Prints: The Chinese Stai

Если все пойдет правильно, вы увидите этот результат. Я написал статью на тему JSON и C#, вам стоит подумать о том, чтобы прочитать ее, От нуля до героя в JSON с C#[^Он также объясняет процесс извлечения динамически построенных документов JSON в динамические объекты в C#, см. комментарии к этой статье.


CPallini

5.

Afzaal Ahmad Zeeshan

Спасибо. Я добавил немного больше объяснений к ответу, который, как мне кажется, был пропущен, пожалуйста, посмотрите.

Karthik_Mahalingam

5

Afzaal Ahmad Zeeshan

Спасибо, Картик, но, похоже, ты забыл нажать на 5 звезд. :-)

Karthik_Mahalingam

да :) , теперь голосуют..