にタイプをデシリアライズすることができません:私はJSONのタグプロパティをデシリアライズすることができませんJToken
{
"posts": [
{
"ID": 7096,
"title": "Backwards Pipe Operator",
"URL": "https://bizmonger.wordpress.com/2017/10/26/backwards-pipe-operator/",
"tags": {
"F#": {
"ID": 6012,
"name": "F#"
}
}
}
]
}
JSONから、私は次の種類を提供し、上記:
type Post = {
title: string
URL: string
Tags: JToken seq // Used to refer to the string instead of the property type
}
type Response = { posts: Post list }
私はに実行しています
let settings = JsonSerializerSettings()
settings.MissingMemberHandling <- MissingMemberHandling.Ignore
let result = JsonConvert.DeserializeObject<Response>(json, settings)
012:
ポスト値の
タグプロパティをデシリアライズしようとすると例外
Newtonsoft.Json.JsonSerializationExceptionは
HRESULT = 0x80131500メッセージ=現在のJSON オブジェクトをデシリアライズすることはできません(例えば、発生しましたタイプがJSON配列を必要とするため(たとえば、[1,2,3])、 'System.Collections.Generic.IEnumerable`1 [Newtonsoft.Json.Linq.JToken]' に「{"name": "value" ) を正しく逆シリアル化します。このエラーを修正するには、JSON配列を (例:[1,2,3])に変更するか、デシリアライズされたタイプを通常の の.NETタイプに変更します(たとえば、整数などのプリミティブ型ではなくコレクションJSON オブジェクトからデシリアライズできる配列またはリストのようなタイプの )。 JsonObjectAttributeを型に追加して、 を強制的にJSONオブジェクトから逆シリアル化することもできます。パス 'ポスト[0] .tags.F番号'、行1、 位置1582ソース=
のStackTrace: Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader リーダーで、タイプobjectTypeに、JsonContract契約、JsonProperty部材、 JsonContainerContract containerContract、JsonProperty containerMember、 オブジェクトexistingValue)...
付録:
はここでJSON URL
ですtry let url = String.Format(ArticlesUrl, user.AccessId)
let response = client.GetAsync(url) |> Async.AwaitTask
|> Async.RunSynchronously
if response.IsSuccessStatusCode
then let json = response.Content.ReadAsStringAsync() |> Async.AwaitTask
|> Async.RunSynchronously
let settings = JsonSerializerSettings()
settings.MissingMemberHandling <- MissingMemberHandling.Ignore
let result = JsonConvert.DeserializeObject<Response>(json, settings);