反序列化原始 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"
}
我有以下原始 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"
}