次のコードで:Json.net JObject.Parse erroring複雑なJSON
let resp = string(argv.GetValue 0)
let json =JObject.Parse resp
は、このエラーを与える:
{
"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"
}
]
}
}
]
}
どのよう:argvのは、この入力された
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.
私はこれを解決する?ここでエラーが発生しない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.
:
また、私はこのエラーを取得し、私は私が作るか知らなかった多くの異なるスキーマのJSONを読み込むしようとしています
{
"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"
}
]
}
}
]
}
。最初のエラーは、文字列として出力する必要があるものから浮動小数点数を生成しようとしているためです。スキーマのような2番目の音は複雑すぎるので、Json.Deserializeを使って適切に解析するには型が必要ですが、その方法はわかりませんし、型を作るのにスキーマが多すぎるので時間がかかるでしょうそれらすべてのために。これらの両方の周りには方法がありますか?
var json = JsonConvert.DeserializeObject(resp)
をそしてあなたのような何かをプロパティにアクセスできます:
奇妙ですが、あなたのコードは私には例外ではありません –
はい私は例外がありません。あなたが使用すべきコードは 'let json = JsonConvert.DeserializeObject(resp)'です。そして、私は上記の例で値を得ることができます。動作していない場合は、クラッシュするjsonサンプルを提供する必要があります。 – Ringil
編集2が私の答えに追加されました。この問題は他に誰も例外が発生していなければ難解になっています:/ –