我有以下原始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);
两次尝试均失败。有什么建议吗?
答案 0 :(得分:3)
您有一个JSON数组字符串,而不是具有属性名称的对象。
所以你在这里做的最好是反序列化数组:
IEnumerable<string> strings =
JsonConvert.DeserializeObject<IEnumerable<string>>(str);
...然后根据需要使用生成的序列strings
。
答案 1 :(得分:0)
使用PubNub,您只需传入本机字符串,字典或数组,我们将在发布端为您进行JSON编码,并在订阅方为您自动进行JSON解码。
答案 2 :(得分:0)
这是因为您的自定义对象&#39;并不等同于json表示。你反序列化的json只是C#中的string[]
(你也可以使用List<string>
或其他IE)。
所以在代码中你正在寻找;
string[] theJson = JsonConvert.DeserializeObject<string[]>(str);
MyObject
将用于以下json;
{
"msg":"Hello World!",
"id":"94952923696694934",
"chn":"MyChannel"
}