C# ServiceStack使用制表符和新行反序列化json
我有读取JSON内容的代码:C# ServiceStack使用制表符和新行反序列化json,c#,json,
servicestack,C#,Json,
servicestack,我有读取JSON内容的代码: using (var reader = new StreamReader(path)) { return TypeSerializer.DeserializeFromReader<Symulacja>(reader); } 我喜欢格式化文件: { Width: 1 , Height: 1 } 但是TypeSerializer.DeserializeFromReader无法解析它,并在Symulacja属性中设置null。之所以
using (var reader = new StreamReader(path))
{
return TypeSerializer.DeserializeFromReader<Symulacja>(reader);
}
我喜欢格式化文件:
{
Width: 1
, Height: 1
}
但是
TypeSerializer.DeserializeFromReader
无法解析它,并在Symulacja
属性中设置null
。之所以会发生这种情况,是因为TypeSerializer类从一种称为JSV(JSON+CSV)的混合格式进行序列化和反序列化,该混合格式与JSON不同。更多详情,请阅读帖子
您可以使用JSON.Net等其他库来反序列化JSON数据。您可以这样做,首先尝试在此处解析JSON字符串\ 如果它经过那里,那么就去。。。粘贴你的字符串。。。它将生成一个具有属性的类 然后 将类粘贴到代码中。并为类创建新对象 并调用反序列化
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; }
}
JavaScriptSerializer js=新的JavaScriptSerializer();
var Data=DeserializeFromJson(“Json字符串”);
public T反序列化fromJSON(字符串json)
{
System.Web.Script.Serialization.JavaScriptSerializer ObjJSerializer=新的System.Web.Script.Serialization.JavaScriptSerializer();
T deserializedProduct=ObjJSerializer.Deserialize(json);
返回反序列化的产品;
}
公开课考试
{
公共整数宽度{get;set;}
公共整数高度{get;set;}
}
使用ServiceStack的JsonSerializer序列化JSON,而不是:
没错:它不是JSON。也许有一些开关:读/写人类可读的文件?我没有看到一个秘密开关。我相信
ServiceStack.Text
的性能在很大程度上依赖于使用这种特定的格式。它仍然是人类可读的,但不可编辑。
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; }
}
using (var reader = new StreamReader(path))
{
return JsonSerializer.DeserializeFromReader<Symulacja>(reader);
}
string json = dto.ToJson();
MyDto json.FromJson<MyDto>();