反序列化原始 JSON 并转换为自定义 C# 对象

Deserialize raw JSON and convert to custom C# Object

我有以下原始 JSON 字符串:

[\"Hello World!\",\"94952923696694934\",\"MyChannel\"]

我尝试了以下方法,但没有成功:

我的自定义对象class:

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);

...然后使用您认为合适的结果序列 strings

使用 PubNub,您只需传入原生字符串、字典或数组,我们将在发布端为您JSON编码,并自动为您JSON解码在订阅方。

这是因为您的 'custom object' 不等同于 json 表示。您要反序列化的 json 只是 C# 中的 string[] (您也可以使用 List<string> 或其他 IEum)。

所以在您要查找的代码中;

string[] theJson = JsonConvert.DeserializeObject<string[]>(str);

MyObject 将用于以下 json;

{
     "msg":"Hello World!",
     "id":"94952923696694934",
     "chn":"MyChannel"
}