JSON.NET JObject ключевое сравнение без учета регистра

Я использую Newtonsoft Json.net для разбора строки JSON. Я конвертирую строку в JObject. Когда доступ к значению элемента по ключу, я хочу, чтобы сравнение было нечувствительным к регистру. В приведенном ниже коде я использую "ОТ" в качестве ключа. Я хочу, чтобы в строке json [ "FROM" ] возвращалась строка "1". ToString(). Но это терпит неудачу. Можно ли сделать код ниже?

String ptString = "{from: 1, to: 3}";
var json = (JObject)JsonConvert.DeserializeObject(ptString);

String f = json["FROM"].ToString();

Ответы

Ответ 1

С# позволяет использовать словари с ключами, которые нечувствительны к регистру, поэтому обходной путь, который я использовал, - это преобразование JObject в словарь с набором StringComparer.CurrentCultureIgnoreCase, например:

JObject json = (JObject)JsonConvert.DeserializeObject(ptString);
Dictionary<string, object> d = new Dictionary<string, object>(json.ToObject<IDictionary<string, object>>(), StringComparer.CurrentCultureIgnoreCase);

String f = d["FROM"].ToString();

Ответ 2

Это должно работать:

string json = @"{UPPER: 'value'}";
JObject o = JObject.Parse(json);
var value = o.GetValue("upper", StringComparison.OrdinalIgnoreCase)?.Value<string>();