У меня есть этот код, который десериализует строку JSON.
Теперь мы можем видеть, что строка JSON имеет, например, это свойство: (Обратите внимание, что свойство CORS существует в свойстве has, поэтому нам нужно проверить, существует ли также has, прежде чем я верю)
CORS
Мой вопрос Иногда случается, что это свойство может отсутствовать в строке JSON. Как видно, я использую код ниже, где я использую блок try / catch. Потому что, если свойство CORS отсутствует, я получаю исключение, но исключения очень дороги по производительности, и теперь я использую блок try / catch для 30 свойств.
Тогда мне интересно, как мы можем проверить с помощью кода, существует ли свойство CORS первым? Ниже строки кода БЕЗ try / catch выдает эту ошибку, когда CORS не существует:
Невозможно выполнить привязку во время выполнения для нулевой ссылки
String corsvalue = "";
try { corsvalue = deserializedTicker.has.CORS.ToLower(); } catch { }
Строка JSON:
{
"id": "hello",
"name": "Hello",
"has": {
"CORS": false,
"CORS2": true
},
"has2": {
"CORS3": false,
"CORS4": true
}
}
Полный код:
String JSONstring = "{ \"id\": \"hello\", \"name\": \"Hello\", \"has\": { \"CORS\": false, \"CORS2\": true }, \"has2\": { \"CORS3\": false, \"CORS4\": true } }\";"
var deserializedTicker = JsonConvert.DeserializeObject<JsonInfo>(JSONstring);
String corsvalue = "";
try { corsvalue = deserializedTicker.has.CORS.ToLower(); } catch { }
public class JsonInfo
{
public string id { get; set; }
public string name { get; set; }
public JsonHasInfo has { get; set; }
public JsonHas2Info has2 { get; set; }
}
public class JsonHasInfo
{
public bool CORS { get; set; }
public bool CORS2 { get; set; }
}
public class JsonHas2Info
{
public bool CORS3 { get; set; }
public bool CORS4 { get; set; }
}