我有一个 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;
在数组的情况下出现此错误:类型'System.String'不支持数组的反序列化。
反序列化处理以下情况的最佳方法是什么:
- 一个字符串
- 一个字符串数组。
对于联系人字段。我很乐意提出任何需要的条件逻辑。.
我试过这个:
var contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
if (contacts is string)
{
jobInfo.contacts = contacts;
}
else
{
jobInfo.contacts = String.Join("; ", contacts );
}
但这似乎没有解决,因为当它是一个数组时我仍然收到上面的错误