Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将类型反序列化为JToken_C#_Json_F#_Json.net - Fatal编程技术网

C# 无法将类型反序列化为JToken

C# 无法将类型反序列化为JToken,c#,json,f#,json.net,C#,Json,F#,Json.net,我无法反序列化我的JSON的Tags属性: { "posts": [ { "ID": 7096, "title": "Backwards Pipe Operator", "URL": "https://bizmonger.wordpress.com/2017/10/26/backwards-pipe-operator/", "tags": { "

我无法反序列化我的JSON的Tags属性:

{
    "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 }
尝试反序列化Post值的Tags属性时遇到异常:

let settings=JsonSerializerSettings()

settings.MissingMemberHandling库非常明确地告诉您出了什么问题:
无法反序列化。。。JSON对象。。。输入类型“JToken seq”,因为该类型需要一个JSON数组才能正确反序列化

Seq
是内容的序列(即列表、数组、枚举)。它对应于JSON数组,而不是JSON对象

要在不预先知道属性名称的情况下反序列化JSON对象,请使用
IDictionary

type Post = { 
    title: string 
    URL: string 
    Tags: IDictionary<string, JToken>
}

库非常明确地告诉您错误所在:
无法反序列化。。。JSON对象。。。输入类型“JToken seq”,因为该类型需要一个JSON数组才能正确反序列化

Seq
是内容的序列(即列表、数组、枚举)。它对应于JSON数组,而不是JSON对象

要在不预先知道属性名称的情况下反序列化JSON对象,请使用
IDictionary

type Post = { 
    title: string 
    URL: string 
    Tags: IDictionary<string, JToken>
}
type Post = { 
    title: string 
    URL: string 
    Tags: IDictionary<string, JToken>
}
type Tag = { ID: string; name: string }

type Post = { 
    title: string 
    URL: string 
    Tags: IDictionary<string, Tag>
}