как проверить нечувствительность свойств к регистру в объектах Json и массивах Json

#c# #json #json.net

#c# #json #json.net

Вопрос:

Я получаю строку json в функции, которая может быть объектом json или списком объектов json [{"user": "123", "password": "abc", "class":"A"}] , т.е. Я хочу проверить, содержит ли эта строка Json свойство user и пароль, а затем обновить их значение. Итак, я получаю строку и преобразую ее с JToken помощью

  var jToken = JToken.Parse(result);
 if (jToken is JArray)
   convert into JArray
 else 
   convert into JObject   
  

После этого я должен проверить, существуют ли вышеуказанные ключи в JArray или JObject.

Обратите внимание, что я также хочу проверить нечувствительность ключей к регистру.Может кто-нибудь помочь, как проверить нечувствительность ключей к регистру в массиве Json и объекте и изменить их значения.

Ответ №1:

Вы можете выполнять поиск свойств без учета регистра через JObject.Property() .

 var json = "[{ 'user':'123','password':'abc','class':'A' }]";
var token = JToken.Parse(json);

foreach (JObject user in token as JArray)
{
    var userProp = user.Property("USER", StringComparison.OrdinalIgnoreCase);
    if (userProp != null)
    {
        userProp.Value = "updated username";
    }

    var passwordProp = user.Property("PaSsWoRd", StringComparison.OrdinalIgnoreCase);
    if (passwordProp != null)
    {
        passwordProp.Value = "updated password";
    }
}

Console.WriteLine(token.ToString());
  

Это приводит к следующему json:

 [
  {
    "user": "updated username",
    "password": "updated password",
    "class": "A"
  }
]