gpt4 book ai didi

c# - newtonsoft json反序列化错误处理: partial deserialization

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:32 25 4
gpt4 key购买 nike

有没有办法反序列化无效的json?

例如,下一个 JSON 反序列化将失败并返回 JsonReaderException

{
'sessionId': 's0j1',
'commandId': 19,
'options': invalidValue // invalid value
}

因为 options 属性值无效。

即使 options 值无效,是否有一种很好的方法来获取 sessionIdcommandId 值?

我知道在反序列化过程中可以处理错误(http://www.newtonsoft.com/json/help/html/SerializationErrorHandling.htm)

var json = "{'sessionId': 's0j1', 'commandId': 19, 'options': invalidValue}"; 

var settings = new JsonSerializerSettings
{
Error = delegate(object sender, ErrorEventArgs args)
{
args.ErrorContext.Handled = true;
}
});
var result = JsonConvert.DeserializeObject(json, settings);

Bit 它将导致 result = null

最佳答案

您可以使用 JsonReader 来完成.

示例代码:

var result = new Dictionary<string, object>();

using (var reader = new JsonTextReader(new StringReader(yourJsonString)))
{
var lastProp = string.Empty;
try
{
while (reader.Read())
{
if (reader.TokenType == JsonToken.PropertyName)
{
lastProp = reader.Value.ToString();
}

if (reader.TokenType == JsonToken.Integer ||
reader.TokenType == JsonToken.String)
{
result.Add(lastProp, reader.Value);
}
}
}

catch(JsonReaderException jre)
{
//do anything what you want with exception
}
}

请注意,有 try..catch block ,因为当 JsonReader 遇到无效字符时,它会在 reader.Read 上抛出 JsonReaderException ()

关于c# - newtonsoft json反序列化错误处理: partial deserialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39384184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com