我正在尝试使用Newtonsoft库更新json(深度〉2)文件。在阅读文件时,如果json键的大小写与json文件中的不同,则无法获取其值。
示例JSON文件:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Error",
"Microsoft.Hosting": "Error"
}
},
}
示例C#代码:
using (file)
{
var serializer = new JsonSerializer();
var json = null;
using (var streamReader = new StreamReader(file))
{
using (var reader = new JsonTextReader(streamReader))
{
try
{
json = serializer.Deserialize(reader) as JObject;
}
catch (Exception e)
{
}
}
}
现在,我尝试通过以下方式访问密钥:
json["Logging"]["LogLevel"]["microsoft"]
但是,它无法获取,因为“microsoft”键为小写,即与json文件中的大小写不同。我尝试在Web上搜索,但结果显示Newtonsoft lib默认情况下不区分大小写。但是,它似乎不适用于我的大小写。我是否缺少访问键的语法?请提供建议。
1条答案
按热度按时间a2mppw5e1#
默认情况下,反序列化器不区分大小写。请参见以下示例:
但是在您的例子中,您使用Newtonsoft.Json.Linq...,其中一些方法是区分大小写的。例如,JObject.this[string propertyName]:
这显式使用区分大小写的StringComparison.Ordinal。
另一种方法是使用指定大小写敏感性的方法,如
JObject.Property
: