【发布时间】:2019-12-27 03:46:20
【问题描述】:
我有一个要反序列化的字符串数组。本质上,它只是一个对象列表。请注意,属性名称中有空格:
[ { \"Event Name\": \"Hurricane Irma PR\", \"Storm Start (LST)\": \"2017-08-30\", \"Storm End (LST)\": \"2017-09-13\", \"Grid Cell Number\": 16412, \"Grid Cell State\": \"PR\", \"Grid Cell Name\": \"Grid26_0\", ...
我创建了一个public class 来根据我想要的特定属性(我不想要所有数据)对字符串进行模板化,但我不确定如何处理我想要的属性名称中的空格.
public class New_Events_Dataset
{
public string EventName { get; set; }
public string StormStart { get; set; }
public string StormEnd { get; set; }
public string GridCellState { get; set; }
public string GridCellName { get; set; }
public string USGSGageSiteNo { get; set; }
public string ReturnPeriodatGridCell { get; set; }
}
当我像这样在我的班级 New_Events_Dataset 上应用反序列化器时:
var jsonResponse = returnJson.Deserialize<List<New_Events_Dataset>>(strresult);
string json = new JavaScriptSerializer().Serialize(jsonResponse);
return json;
我最终会返回这样的东西。我做错了什么?
[{"EventName":null,"StormStart":null,"StormEnd":null,"GridCellState":null,"GridCellName":null,"USGSGageSiteNo":null,"ReturnPeriodatGridCell":null}
【问题讨论】:
-
您需要切换到不同的序列化程序,例如json.net 或datacontractjsonserializer,或者使用自定义的
JavaScriptConverter手动反序列化,因为JavaScriptSerializer不支持重命名属性。请参阅:JavaScriptSerializer - custom property name。 -
事实上这可能是JavaScriptSerializer - custom property name的副本。同意吗?
标签: c# asp.net json deserialization javascriptserializer