我不想使用Newtonsoft的Json.Net库。如果我能在这个项目中有所帮助,我会避免任何第三方的依赖。
如果我有这样的JSON:
{
"has_more_items": false,
"items_html": "...",
"min_position": "1029839231781429248"
}
我有一个看起来像这样的类:
public class TwitterJson
{
bool hasMore { get; set; } // has_more_items
string rawText { get; set; } // items_html
string nextKey { get; set; } // min_position
}
我有一个包含上述JSON的JsonObject:
JsonObject theJson = JsonObject.Parse(result);
如何将JsonObject反序列化为我的类?我一直在努力寻找一个明确的例子,我找到的所有东西都使用Json.Net。
发布于 2018-08-16 07:17:57
你必须用[DataContract]
和[DataMember]
属性来装饰你的类。将json写入内存流并使用DataContractJsonSerializer进行反序列化
Here是一个更详细的示例。
除了@Nkosi的回答之外,下面是JSON.net与其他替代方案之间的一些比较:
发布于 2018-08-16 08:20:25
正如@Dimith所提到的,你需要用[DataContract]
和[DateMember]
来装饰你的类,请参考下面的代码将你的JSON转换成一个给定的对象。
// Deserialize a JSON string to a given object.
public static T ReadToObject<T>(string json) where T: class, new()
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
return ser.ReadObject(stream) as T;
}
}
类:
[DataContract]
public class TwitterJson
{
[DataMember(Name = "has_more_items")]
bool hasMore { get; set; } // has_more_items
[DataMember(Name = "items_html")]
string rawText { get; set; } // items_html
[DataMember(Name = "min_position")]
string nextKey { get; set; } // min_position
}
如何使用的示例:
var result = "{\"has_more_items\": false, \"items_html\": \"...\",\"min_position\": \"1029839231781429248\"}";
var obj = ReadToObject<TwitterJson>(result);
https://stackoverflow.com/questions/51867509
复制相似问题