1

我有读取 JSON 内容的代码:

using (var reader = new StreamReader(path))
{
    return TypeSerializer.DeserializeFromReader<Symulacja>(reader);
}

它仅在 json 文件如下时才有效:

{Width:1,Height:1}

我喜欢格式化文件:

{
    Width: 1
    , Height: 1
}

TypeSerializer.DeserializeFromReader无法解析并设置属性nullSymulacja

4

3 回答 3

2

使用 ServiceStack 的 JsonSerializer 序列化 JSON 而不是TypeSerializer 这是 JSV 格式

using (var reader = new StreamReader(path))
{
    return JsonSerializer.DeserializeFromReader<Symulacja>(reader);
}

.ToJson().FromJson<T>()扩展方法对于消费 JSON也很有用,例如:

string json = dto.ToJson();
MyDto json.FromJson<MyDto>();
于 2013-10-30T12:10:20.533 回答
0

您可以这样做,首先尝试在这里解析您的 Json 字符串 \

http://json.parser.online.fr/

如果它通过那里然后转到http://json2csharp.com/ ...粘贴您的字符串...它将生成一个具有属性的类

然后

将类粘贴到您的代码中。并为该类创建新对象

并调用反序列化

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; }
}
于 2013-10-30T12:03:50.840 回答
0

发生这种情况是因为 TypeSerializer 类从称为 JSV (JSON + CSV) 的混合格式序列化和反序列化,这不是相同的 JSON。阅读这篇文章了解更多详情。

您可以使用 JSON.Net 等其他库来反序列化您的 JSON 数据。

于 2013-10-30T11:50:20.010 回答