gpt4 book ai didi

c# - 如果 json 包含空数组,则 Json.NET SelectTokens 不起作用

转载 作者:行者123 更新时间:2023-11-30 17:46:05 29 4
gpt4 key购买 nike

我有一个有效的 JSON 对象,其中包含多个“en-US”键,我正在尝试选择这些键。为此,我使用 JsonPath

"$..en-US"

它被赋予由 Json.NET 实现的 SelectTokens 过程。它是 .NET 的 JSON 框架。只要我的 JSON 不包含任何空数组,一切都运行良好。这是一个例子:

var myJsonPath = "$..en-US";
var myJson =
@"{
'controls': [
{
'messages': {
'addSuggestion': {
'en-US': 'Add'
}
}
},
{
'header': {
'controls': []
},
'controls': [
{
'controls': [
{
'defaultCaption': {
'en-US': 'Sort by'
},
'sortOptions': [
{
'label': {
'en-US': 'Name'
}
}
]
}
]
}
]
}
]
}";
var jToken = JObject.Parse(myJson);
var tokens = jToken.SelectTokens(myJsonPath);

这里,tokens 变量将只包含一个元素!这将是“标题”对象的“控件”中的空数组之前的“en-US”事件。但是,当我将这个“ header ”对象排除在外时:

var myJson = 
@"{
'controls': [
{
'messages': {
'addSuggestion': {
'en-US': 'Add'
}
}
},
{
'controls': [
{
'controls': [
{
'defaultCaption': {
'en-US': 'Sort by'
},
'sortOptions': [
{
'label': {
'en-US': 'Name'
}
}
]
}
]
}
]
}
]
}";

我将按预期获得“en-US”的所有 3 次出现。顺便说一句,如果我在 an online tool 中的第一个 JSON 对象(即包含一个空数组)上验证我的 JsonPath ,然后正如预期的那样,我得到了所有三个“en-US”案例。这与我从 Json.NET 得到的不同。我想知道这是错误还是我必须以某种方式手动处理这种情况?

最佳答案

这是一个已修复的错误。升级到最新版本的 Json.NET。

关于c# - 如果 json 包含空数组,则 Json.NET SelectTokens 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719113/

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