0

だから私はこのオブジェクトを持っています:

public class JournalItem
{
    public string Description { get; set; }
    public bool IsShared { get; set; }
    public bool IsDeleted { get; set; }
    public bool IsGroup { get; set; }
    public Guid Id { get; set; }
    public List<JournalItem> ChildEntities { get; set; }
}

そこには、同じタイプのオブジェクト、ChildEntititesのリストがあります。これらの配列をJsonとしてサーバーに投稿するページがあります。これが返されるJsonです:

[{"Description":"Develop social skills","Id":"d48749ea-2b50-4563-b47c-f2014b08c53a","IsShared":false,"IsDeleted":false,"IsGroup":false,"ChildEntitites":[]},{"Description":"Be more like Joel D.","Id":"a18749ea-2b50-4563-b47c-f2014b08d123","IsShared":true,"IsDeleted":false,"IsGroup":true,"ChildEntitites":[{"Description":"Wear cool glasses","Id":"77c56855-5626-4107-bc82-5862ccdb0943","IsShared":false,"IsDeleted":false,"IsGroup":false,"ChildEntitites":[]},{"Description":"Get 16GB of RAM","Id":"82081eab-b4ce-41fe-bcec-22178b7ed8e6","IsShared":false,"IsDeleted":false,"IsGroup":false,"ChildEntitites":[]}]},{"Description":"Nested group 1","Id":"9495f718-9e7b-4936-b1bf-112d1e7d3ef5","IsShared":false,"IsDeleted":false,"IsGroup":true,"ChildEntitites":[{"Description":"Nested group 2","Id":"70a7e919-1253-4dbd-b41b-49d8bd599657","IsShared":false,"IsDeleted":false,"IsGroup":true,"ChildEntitites":[{"Description":"Nested group 3","Id":"77bfcb11-cba2-48a9-8a1b-b4e0c9b1c5e1","IsShared":false,"IsDeleted":false,"IsGroup":true,"ChildEntitites":[{"Description":"Very nested objective","Id":"274c786b-d09c-4228-a18a-629d4ca9aed3","IsShared":false,"IsDeleted":true,"IsGroup":false,"ChildEntitites":[]}]}]}]}]

JavaScriptSerilaiazerを使用して実際のオブジェクトに変換する方法は次のとおりです。

var ser = new JavaScriptSerializer();
var journalStructure = ser.Deserialize<List<JournalItem>>(journalJson);

(私も同じ結果でNewtonSoftを試しました)

これにより、3つのアイテムの配列が得られるはずです(これは可能です)。最初のアイテムにはChildEntitiesを含めるべきではありませんが、2番目と3番目のアイテムにはChildEntitiesとしてJournalItemsの別のリストを含める必要がありますが、これらも両方ともnullです。

これらのシリアライザーの1つを取得して、json配列をリストとして逆シリアル化するにはどうすればよいですか?それをしてもいいですか?

4

1 に答える 1

4

ChildEntities 次のように変更すると機能するはずですChildEntitites(json文字列にはこれが含まれています)

Json.netとJavaScriptSerializerの両方が機能します。

于 2012-05-23T17:08:11.773 に答える