【发布时间】:2017-08-31 10:45:09
【问题描述】:
我有一个 JSON 文本,来自 Sharepoint 2013 中的搜索,并希望将其反序列化为 MyClass 列表。 我有一个使用 KeyValuePair 的解决方案
var results = item["Cells"]["results"].ToObject<List<KeyValuePair<string, string>>>();
但是这种方法会删除日期格式等。一切都以字符串结尾。例如。 JSON 文件中正确的挪威日期最终会成为文本中的准挪威日期。
编辑:我正在使用 Newtonsoft.Json 库。
编辑:日期格式只是问题的一部分。反序列化是我的主要问题。
此示例简化了 JSON 和类。 JSON 文件可以有很多这样的记录,所以它最终会出现在一个对象列表中。你有一个很好的解决方案来反序列化这个 JSON 吗?
JSON
{
"__metadata": {
"type": "SP.SimpleDataRow"
},
"Cells": {
"results": [
{
"__metadata": {
"type": "SP.KeyValue"
},
"Key": "Id",
"Value": "358553",
"ValueType": "Edm.Int64"
},
{
"__metadata": {
"type": "SP.KeyValue"
},
"Key": "Url",
"Value": "http://somewhere.com",
"ValueType": "Edm.String"
},
{
"__metadata": {
"type": "SP.KeyValue"
},
"Key": "Title",
"Value": "My title",
"ValueType": "Edm.String"
},
{
"__metadata": {
"type": "SP.KeyValue"
},
"Key": "MyDate",
"Value": "2017-09-10T11:10:19Z",
"ValueType": "Edm.DateTime"
}
]
}
}
类
public class MyClass
{
public int Id { get; set; }
public string Url { get; set; }
public string Title { get; set; }
public DateTime MyDate { get; set; }
}
【问题讨论】:
-
使用合适的 Json 库怎么样? NET中常用的是Json.Net
-
抱歉,忘记告知正在使用的 Json 库。我正在使用 Newtonsoft.Json 库。
-
无论您的日期格式是什么,您都需要指定一个
IsoDateTimeConverter。 Json.Net 期望 ISO 8601 dates -
也值得一读The “right” JSON date format。从技术上讲,您的 json 日期无效,因为它不符合 Javascript 标准 (8601)。它只是一个恰好代表您来自的日期的字符串
标签: c# json serialization json.net