2017-07-28 7 views
1

カスタムデータ型を持つオブジェクトがあります。そのオブジェクトをREST API経由で渡そうとすると、次のようなエラーが表示されます。The 'ObjectContent'1' type failed to serialize the response body for content type 'application/json; charset=utf-8'. JSONに変換するためにAPIがカスタムオブジェクト(カスタムデータ型を使用)をシリアル化しようとしていると仮定しています。これを可能にする方法はありますか?私はビジュアルベーシックでコーディングしています。JSONに変換できるようにVB.netでオブジェクトを(カスタムデータ型で)シリアライズ可能にするにはどうすればいいですか?

編集:私はASP.NET Framework 4.6.1を使用しています。私のオブジェクトは、データベースに接続することに関係しています。そのため、私はdatabasePointerのようなカスタムデータ型を作成しましたが、これは単なる長い値です。これは、データベースに接続するときに番号を混同しないようにするためです。シリアライズするオブジェクトを渡す前に、それらのカスタムデータ型をプリミティブデータ型に変換する方法を見つける必要があります。

+0

あなたはより多くの情報を共有して検討することができます。どのようなフレームワークでREST APIを実装していますか?オブジェクトはどのように見えますか? – Deadron

+0

入力いただきありがとうございます@Deadron –

+0

私は[mcve]を見て、あなたに特別な助けを必要とします。同様の質問に答えるには、[Web APIでの応答のシリアル化に失敗しました](https://stackoverflow.com/q/12641386)、[JsonでWeb APIで応答をシリアル化できませんでした](https:// stackoverflow。 com/q/23098191)、[Asp.Net Web APIエラー: 'ObjectContent'1'タイプがコンテンツタイプ 'application/xml;のレスポンスボディをシリアル化できませんでした。 (Web API:コンテンツタイプのレスポンスボディをシリアル化できませんでした)(https://stackoverflow.com/q/33559080)を参照してください。 – dbc

答えて

0

私は単純にオブジェクトを取得し、プロパティの反復を実行しました(私が選択したプリミティブ値)ので、別のオブジェクトにコピーしてしまいました。私はそれを通過し、それは正常に働いた。私は特定のオブジェクトの変換を行うためにクラスを書く必要がありましたが、それはうまく動作し、時間がかかりませんでした。

例クラス:

Public Class Converter 
Dim propertyKeys As New ArrayList 
Private Sub InitiateKeys() 
'add keys here for property names 
End Sub 
Public Function convertToString(ByVal order As ShopOrder) As 

    InitiateKeys() 

    Dim json As ShopOrderJSON = New ShopOrderJSON 

    If (IsDBNull(order)) Then 
     Return json 
    End If 

    Try 
     For Each key As String In shopOrderKeys 
      json.GetType.GetField(key).SetValue(json, order.GetType.GetField(key).GetValue(order).ToString) 
     Next 
    Catch ex As Exception 
     Console.WriteLine(ex.Message) 
    End Try 

    Return json 
End Function 
End Class 
関連する問題