反序列化原始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并转换为自定义C#对象

您有一个字符串的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"
}