1

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

4

3 に答える 3

2

JSV Format である TypeSerializer ではなく、ServiceStack の JsonSerializer を使用して JSON をシリアル化します。

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/に移動します...文字列を貼り付けます...属性を持つクラスを生成します

それから

クラスをコード内に貼り付けます。クラスの新しいオブジェクトを作成します

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

これは TypeSerializer クラスが同じ JSON ではない JSV (JSON + CSV) と呼ばれるハイブリッド形式からシリアル化および逆シリアル化するために発生します。詳細については、この投稿をお読みください。

JSON.Net などの他のライブラリを使用して、JSON データを逆シリアル化できます。

于 2013-10-30T11:50:20.010 に答える