【发布时间】:2012-04-13 13:20:26
【问题描述】:
我有一个 asp.net-mvc 网站,我正在从数据库中读取 Json 字符串。这是数据库中的以下 json。它可能看起来像这样:
{"description": "Test", "contacts": ["joe@gmail.com", "bill@yahoo.com"], "enabled": true}
或者这个:
{"description": "Test", "contacts": "joe@gmail.com, bill@yahoo.com", "enabled": true}
如您所见,联系人字段是:
- 一个字符串(项目用逗号分隔)
- 字符串数组。
我想转成这个类:
public class MyJob
{
public string description;
public string[] contacts;
public string enabled;
}
当我尝试仅分配给一个字符串时(将上面的内容更改为:公共字符串联系人; ) 使用 JavascriptSerializer():
var serializer = new JavaScriptSerializer();
string contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
在数组的情况下出现此错误:Type 'System.String' is not supported for deserialization of an array.
反序列化处理以下情况的最佳方法是什么:
- 一个字符串
- 字符串数组。
用于联系人字段。我很乐意提出任何需要的条件逻辑。 .
我试过了:
var contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
if (contacts is string)
{
jobInfo.contacts = contacts;
}
else
{
jobInfo.contacts = String.Join("; ", contacts );
}
但这似乎没有解决,因为当它是一个数组时我仍然收到上面的错误
【问题讨论】:
-
我不认为您可以编写脚本以在数据库中以一致的方式对这些值进行编码?
-
不幸的是没有。我不拥有数据库或数据
标签: c# json deserialization javascriptserializer