1

標準のasp.netライブラリを使用するjsonカスタムコンバーターがあります。私のコンバーターは次のようになります。

public class MyObjectToJson : JavaScriptConverter

  public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
  {
     MyObject TheObject = obj as MyObject;
     Dictionary<string, object> OutputJson = new Dictionary<string, object>();

     OutputJson.Add("SomeProperty", TheObject.Property1);

     //line that I'm not figuring out
     //I have a type MyNestedObject nested in the object model of MyObject
     //I added that nested converter in the SupportedTypes method    

     OutputJson.Add("TheNestedObject",....?);

     return OutputJson;
   }

   public override IEnumerable<Type> SupportedTypes
   {
      get { return new Type[] { typeof(MyObject), typeof(MyNestedObject) }; }
   }

基本的に、MyNestedObjectJsonと呼ばれる別のjsonカスタムコンバーターがありますが、どこにプラグインするのか疑問に思っています。

4

1 に答える 1

1

わかりました、私はそれを理解しました。私はグーグルを通してこのページに着陸する人々のためにこの答えを追加しています。それは本当にとても簡単です:

呼び出し元のコードでは、次のようにネストされたオブジェクトのコンバーターを登録します。

JavaScriptSerializer TheSerializer = new JavaScriptSerializer();

TheSerializer.RegisterConverters(new JavaScriptConverter[] { 
  new MyObjectToJson(), new MyNestedObjectToJson() 
});

次に、親オブジェクトのjsonコンバーターで、問題が発生した行を次のように記述します。

OutputJson.Add("TheNestedObject", TheObject.TheNestedObject);

シリアライザーには両方のコンバーターが登録されているため、ネストされたオブジェクトのコンバーターが起動します。

これがいくつかの助けになることを願っています。

于 2012-04-18T09:43:00.337 に答える