我有读取JSON内容的代码:
using (var reader = new StreamReader(path))
{
return TypeSerializer.DeserializeFromReader<Symulacja>(reader);
}
仅当json文件类似时才有效:
{Width:1,Height:1}
我喜欢编写文件:
{
Width: 1
, Height: 1
}
但TypeSerializer.DeserializeFromReader
无法对其进行解析并在null
属性中设置Symulacja
。
答案 0 :(得分:2)
使用ServiceStack的JsonSerializer序列化JSON而不是TypeSerializer which is the JSV Format:
using (var reader = new StreamReader(path))
{
return JsonSerializer.DeserializeFromReader<Symulacja>(reader);
}
同样,.ToJson()
和.FromJson<T>()
扩展方法有助于使用JSON消费包,例如:
string json = dto.ToJson();
MyDto json.FromJson<MyDto>();
答案 1 :(得分:0)
这是因为TypeSerializer类从称为JSV(JSON + CSV)的混合格式序列化和反序列化,这种格式与JSON不同。阅读this帖子了解更多详情。
您可以使用其他库(如JSON.Net)来反序列化您的JSON数据。
答案 2 :(得分:0)
你可以这样做,首先尝试在这里解析你的Json字符串\
如果它通过那里然后转到http://json2csharp.com/ ...粘贴你的字符串......它将生成一个带属性的类
然后
将类粘贴到代码中。并为类创建新对象
并调用Deserialize
JavaScriptSerializer js = new JavaScriptSerializer();
var Data = DeserializeFromJson<Test>("Json String");
public T DeserializeFromJson<T>(string json)
{
System.Web.Script.Serialization.JavaScriptSerializer ObjJSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
T deserializedProduct = ObjJSerializer.Deserialize<T>(json);
return deserializedProduct;
}
public class Test
{
public int Width { get; set; }
public int Height { get; set; }
}