2017-07-28 52 views
1

我有一个有自定义数据类型的对象。当我尝试通过我的REST API传递该对象时,出现以下错误:The 'ObjectContent'1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.我假设API试图序列化我的自定义对象(使用自定义数据类型)以将其转换为JSON。有没有一种方法可以使这成为可能?我在视觉基础编码。如何使一个对象(使用自定义数据类型)在VB.net中可序列化,以便它可以转换为JSON?

编辑:我正在使用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。 [Asp.Net Web API错误:'ObjectContent'1'类型未能序列化内容类型'application/xml;'的响应主体; charset = utf-8'](https://stackoverflow.com/q/13959048),也许[Web API:无法序列化内容类型的响应主体](https://stackoverflow.com/q/33559080)。 – dbc

回答

0

我最终只是把对象,运行属性的迭代(我选择它们作为原始值),并将它们复制到另一个对象。然后我通过了它,它工作正常。我不得不写一个类来为特定对象进行转换,但它运行良好,并且不需要很长时间。

Example类:

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 
相关问题