【发布时间】:2018-03-17 19:26:10
【问题描述】:
我一直在为此苦苦挣扎,我认为我的唱片设计有问题。
我的 json 如下所示。我早些时候将此作为另一个问题的一部分发布,但没有得到完整的答案,特别是对于这一部分。数组中的每条记录都是一个对象,其字段名称为字符串类型的数据。
JSON
[
{
"data": "/publication/a40a5e5c-98b3-45ae-d6a3-924b31d8712a/article/test;version=1521246543034"
},
{
"data": "/publication/a40a5e5c-98b3-45ae-d6a3-924b31d8712a/book/test2;version=1520623346891"
},
{
"data": "/publication/a40a5e5c-98b3-45ae-d6a3-924b31d8712a/catalog/test3;version=1520623346833"
}
]
List.fs
open System.Runtime.Serialization
[<DataContract>]
type List= {
[<field: DataMemberAttribute(Name="data") >]
Data: string
}
解析 JSON
let response = request.GetResponse() :?> HttpWebResponse
use reader = new StreamReader(response.GetResponseStream())
use memoryStream = new MemoryStream(ASCIIEncoding.Default.GetBytes(reader.ReadToEnd()))
let jsonSerializer = DataContractJsonSerializer(typeof<List[]>)
let result = jsonSerializer.ReadObject(memoryStream) :?> List[]
Debug.WriteLine(sprintf "%A" result)
实际输出 - 有空值
[|
{Data = null;};
{Data = null;};
{Data = null;}
|]
预期输出
[|
{Data = "/publication/a40a5e5c-98b3-45ae-d6a3-924b31d8712a/article/test;version=1521246543034";};
{Data = "/publication/a40a5e5c-98b3-45ae-d6a3-924b31d8712a/book/test2;version=1520623346891";}
{Data = "/publication/a40a5e5c-98b3-45ae-d6a3-924b31d8712a/catalog/test3;version=1520623346833";}
|]
迭代
result
> Array.iter (fun x -> Console.WriteLine(x.Href))
【问题讨论】:
标签: json collections f# datacontractjsonserializer