反序列化原始JSON并转换为自定义C#对象
本文关键字:自定义 对象 转换 原始 JSON 反序列化 | 更新日期: 2024-09-24 15:54:07
我有以下原始JSON字符串:
['"Hello World!'",'"94952923696694934'",'"MyChannel'"]
我尝试了以下没有运气:
我的自定义对象类:
public class MyObject
{
public string msg { get; set; }
public string id { get; set; }
public string chn { get; set; }
}
JSON字符串:
string str = "['"Hello World!'",'"94952923696694934'",'"MyChannel'"]";
第一次尝试使用System.Web.Script.Serialization:
JavaScriptSerializer serializer = new JavaScriptSerializer();
MyObject obj1 = serializer.Deserialize<MyObject>(str);
第二次尝试使用Newtonsoft.Json:
MyObject obj2 = JsonConvert.DeserializeObject<MyObject>(str);
两次尝试都失败了。有什么建议吗?
您有一个字符串的JSON数组,而不是一个具有属性名称的对象。
因此,在这里你能做的最好的事情就是反序列化数组:
IEnumerable<string> strings =
JsonConvert.DeserializeObject<IEnumerable<string>>(str);
然后使用您认为合适的结果序列CCD_ 1。
使用PubNub,您只需传入本地String、Dictionary或Array,我们将在发布端为您进行JSON编码,并在订阅端为您自动进行JSON解码。
这是因为您的"自定义对象"不等同于json表示。您正在反序列化的json只是C#中的string[]
(您也可以使用List<string>
或其他IEum)。
因此,在代码中,您正在寻找;
string[] theJson = JsonConvert.DeserializeObject<string[]>(str);
MyObject
将用于以下json;
{
"msg":"Hello World!",
"id":"94952923696694934",
"chn":"MyChannel"
}