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
解析没有标记F的JSON#_Json_Firebase Realtime Database_F#_Json.net - Fatal编程技术网

解析没有标记F的JSON#

解析没有标记F的JSON#,json,firebase-realtime-database,f#,json.net,Json,Firebase Realtime Database,F#,Json.net,我正在尝试反序列化以下JSON: { "-L3ELSSzZPRdjCRcFTrb":{ "senderId":"SWs56OIGzMdiCjSXahzDQX8zve92", "senderName":"alberto", "text":"Hi" }, "-L3EN1NW5hHWBTEGC9ve":{ "senderId":"YMM45tgFFvYB7rx9PhC2TE5eW6D2", "sender

我正在尝试反序列化以下JSON:

    {  
   "-L3ELSSzZPRdjCRcFTrb":{  
      "senderId":"SWs56OIGzMdiCjSXahzDQX8zve92",
      "senderName":"alberto",
      "text":"Hi"
   },
   "-L3EN1NW5hHWBTEGC9ve":{  
      "senderId":"YMM45tgFFvYB7rx9PhC2TE5eW6D2",
      "senderName":"David",
      "text":"Hey"
   }
}
为此,我创建了以下两个记录:

type MessageContent = 
{ senderId: string
  senderName: string
  text: string; }

type Messages = 
    {
        messages_list : Map<string,MessageContent>;
    }

问题似乎是JSON中没有
messages\u list
标记,因此转换器无法找到该标记并返回null。在没有初始标记的情况下,如何处理这样的jSON

最简单的方法可能是使用
[]
属性并添加
[]

这样更改您的消息类型(您可能还必须将
[]
添加到
消息内容
类型中)

[]
类型消息={[]消息:IDictionary}
然后,您可以将其反序列化为这样的映射

let msg = JsonConvert.DeserializeObject<Messages>(html)
let messagemap = 
    msg.messages 
    |> Seq.map (fun kvp -> kvp.Key, kvp.Value.ToObject<MessageContent>())
    |> Map.ofSeq
let msg=JsonConvert.DeserializeObject(html)
让messagemap=
消息
|>Seq.map(有趣的kvp->kvp.Key,kvp.Value.ToObject())
|>赛克地图
这将为您留下
MessageContent
记录的地图

{{messages_list = null;}}
[<CLIMutable>]
type Messages = { [<JsonExtensionData>] messages : IDictionary<string, JToken> }
let msg = JsonConvert.DeserializeObject<Messages>(html)
let messagemap = 
    msg.messages 
    |> Seq.map (fun kvp -> kvp.Key, kvp.Value.ToObject<MessageContent>())
    |> Map.ofSeq