0

JsonConvert.SerializeObjectを使用すると、かなり奇妙な動作が発生します。

私は次のような方法を持っています:

public class ServiceController : ApiController
{
    public object GetJSONConnectedResponse(object input)
    {
        return JsonConvert.SerializeObject(input, Formatting.Indented,
        new JsonSerializerSettings()
        {
            ReferenceLoopHandling = ReferenceLoopHandling.Serialize
        });
    }


    public object GetMediaGallery(int? id)
    {
        try
        {
            return GetJSONConnectedResponse(GalleryBLL.GetMediaGallery(id));
        }
        catch (Exception exc)
        {
            LogBLL.LogException(exc, HttpContext.Current.Request.RawUrl);
            return null;
        }
    }
}

ご覧のとおり、私はMVC Web APIをサービスアプリケーションとして使用しており、クライアント側でjavascriptを使用してajaxタイプのデータをクエリします。

GetMediaGalleryメソッドは、次の構造のホルダークラスを返します。

public class MediaGalleryHolder
{
    public List<DB_Image> Images { get; set; }
    public List<string> SpinFrames { get; set; }
    public string FlyoverVideo { get; set; }
}

DB_Imagesは、ストアドプロシージャを呼び出すことにより、ビジネスロジックメソッドに入力する複雑なエンティティです。この複雑なエンティティに、2つのプロパティを追加しました。

public partial class DB_Image
{
    public string FullPath { get; set; }
    public string ThumbPath { get; set; }
}

何らかの理由で、私のローカルマシンでは、結果は正しくシリアル化されます(2つの追加プロパティの両方が追加されます)が、サーバーでは、これらの追加プロパティは結果に追加されません(データが入力されていることはわかっていますが、シリアル化されていません)。

これはある種のJSON.NETまたはMVCWebAPIのバージョン管理の問題ですか?これをトラブルシューティングまたは解決するにはどうすればよいですか?

どんな助けでも大歓迎です!

一番、

部族84

4

1 に答える 1

0

各クラスの注釈を試しましたか? [Serializable] を追加してみることができます

  [Serializable] 
  public partial class DB_Image
  {
        public string FullPath { get; set; }
        public string ThumbPath { get; set; }
  }

  [Serializable]
  public class MediaGalleryHolder
  {
       public List<DB_Image> Images { get; set; }
       public List<string> SpinFrames { get; set; }
       public string FlyoverVideo { get; set; }
  }

それが役に立てば幸い!

于 2013-04-03T14:56:02.050 に答える