gpt4 book ai didi

复杂 json 上的 Json.net JObject.Parse 错误

转载 作者:行者123 更新时间:2023-12-04 18:38:33 27 4
gpt4 key购买 nike

以下代码:

let resp = string(argv.GetValue 0)

let json =JObject.Parse resp

给出这个错误:

An unhandled exception of type 'Newtonsoft.Json.JsonReaderException' 
occurred in Newtonsoft.Json.dll

Input string '2.2.6' is not a valid number.
Path 'items[0].versionName', line 1, position 39.

其中 argv 是这个输入:

{  
"totalCount":1,
"items":[
{
"versionName":"2.2.6",
"phase":"PLANNING",
"distribution":"EXTERNAL",
"source":"CUSTOM",
"_meta":{
"allow":[
"GET",
"PUT",
"DELETE"
],
"href":"url",
"links":[
{
"rel":"versionReport",
"href":"url"
},
{
"rel":"project",
"href":"url"
},
{
"rel":"policy-status",
"href":"url"
}
]
}
}
]
}

我该如何解决这个问题?有没有简单的方法来实现这里不报错的json读取器?

我也遇到了这个错误:

An unhandled exception of type 'Newtonsoft.Json.JsonReaderException' 
occurred in Newtonsoft.Json.dll

Error parsing undefined value. Path 'items[0].name', line 1, position 28.

有了这个输入:

{  
"totalCount":1,
"items":[
{
"name":"uaa",
"projectLevelAdjustments":true,
"source":"CUSTOM",
"_meta":{
"allow":[
"GET",
"PUT",
"DELETE"
],
"href":"url",
"links":[
{
"rel":"versions",
"href":"url"
},
{
"rel":"canonicalVersion",
"href":"url"
}
]
}
}
]
}

我正在尝试读取许多我没有制作或不知道的不同模式的 json。第一个错误似乎是因为它试图从应该作为字符串输出的东西生成 float 。第二个听起来像是架构太复杂,需要一个类型才能使用 Json.Deserialize 正确解析它,但我不确定该怎么做,而且这会花费太多时间,因为有太多架构来制作类型对于他们所有人。有什么办法可以解决这两个问题吗?

最佳答案

在 C# 中,您可以像这样使用 dynamic:

var json = JsonConvert.DeserializeObject(resp)

然后您可以使用以下内容访问属性:json.totalCount

在 F# 土地上,this question给出了一些关于如何处理 dynamic 对象的建议。如果您使用包 FSharp.Interop.Dynamic你可以在你的例子中用这样的东西得到 totalCount 的值:

let value:obj = json?totalCount?Value

在我的电脑上给出 1L。

关于复杂 json 上的 Json.net JObject.Parse 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40097196/

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