正在将Class对象转换为WebService的Json
Converting Class object to Json for WebService
我正试图将类Product
的对象作为Web服务的Json
返回。该对象加载了所有的值,但当它试图将其作为Json返回时,我遇到了一个错误。这是我的方法:
<AllowAnonymous> <HttpGet> _
Public Function GetProduct() As HttpResponseMessage
Try
Dim oProduct As New Product
oProduct = Product.GetProductByID(25)
Dim jsSerializer As System.Web.Script.Serialization.JavaScriptSerializer
jsSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
Dim sbProduct As New System.Text.StringBuilder()
jsSerializer.Serialize(oProduct, sbProduct)
Dim json As String = sbProduct.ToString()
Return Request.CreateResponse(HttpStatusCode.OK, json)
Catch exc As Exception
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)
End Try
End Function
响应:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Exception has been thrown by the target of an invocation.
</ExceptionMessage>
<ExceptionType>System.Reflection.TargetInvocationException</ExceptionType>
<StackTrace>
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Web.SecurityUtils.MethodInfoInvoke(MethodInfo method, Object target, Object[] args) at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat) at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember) at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat, MemberInfo currentMember) at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat) at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output) at Christoc.Modules.top3all.ModuleTaskController.GetProduct() in C:'inetpub'wwwroot'top3'DesktopModules'top3all'Models'WebServices.vb:line 30
</StackTrace>
<InnerException>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Object reference not set to an instance of an object.
</ExceptionMessage>
<ExceptionType>System.NullReferenceException</ExceptionType>
<StackTrace>
at DotNetNuke.Security.Permissions.PermissionProvider.HasModuleAccess(SecurityAccessLevel accessLevel, String permissionKey, ModuleInfo moduleConfiguration) at DotNetNuke.Security.Permissions.ModulePermissionController.HasModuleAccess(SecurityAccessLevel accessLevel, String permissionKey, ModuleInfo moduleConfiguration) at DotNetNuke.UI.Modules.ModuleInstanceContext.LoadActions(HttpRequest request) at DotNetNuke.UI.Modules.ModuleInstanceContext.get_Actions() at DotNetNuke.Entities.Modules.PortalModuleBase.get_Actions()
</StackTrace>
</InnerException>
</Error>
编辑#1产品的定义
公共类产品继承添加新
Public Shared selectedProduct As New Product
Private iProductID As Integer
Public Property ProductID() As Integer
Get
Return iProductID
End Get
Set(ByVal value As Integer)
iProductID = value
End Set
End Property
Private iCategoryID As Integer
Public Property CategoryID() As Integer
Get
Return iCategoryID
End Get
Set(ByVal value As Integer)
If IsNothing(value) Or IsDBNull(value) Then
iCategoryID = 0
Else
iCategoryID = value
End If
End Set
End Property
Private iSubCategoryID As Integer
Public Property SubCategoryID() As Integer
Get
Return iSubCategoryID
End Get
Set(ByVal value As Integer)
If IsNothing(value) Or IsDBNull(value) Then
iSubCategoryID = 0
Else
iSubCategoryID = value
End If
End Set
End Property
Private sName As String
Public Property Name() As String
Get
Return sName
End Get
Set(ByVal value As String)
sName = value
End Set
End Property
Private sDescription As String
Public Property Description() As String
Get
Return sDescription
End Get
Set(ByVal value As String)
sDescription = value
End Set
End Property
Private dPrice As Double
Public Property Price() As Double
Get
Return dPrice
End Get
Set(ByVal value As Double)
If IsNothing(value) Or IsDBNull(value) Then
dPrice = 0.0
Else
dPrice = value
End If
End Set
End Property
Private sCurrencyCulture As String
Public Property CurrencyCulture() As String
Get
Return sCurrencyCulture
End Get
Set(ByVal value As String)
sCurrencyCulture = value
End Set
End Property
Private sKeywords As String
Public Property Keywords() As String
Get
Return sKeywords
End Get
Set(ByVal value As String)
sKeywords = value
End Set
End Property
Private sCountry As String
Public Property Country() As String
Get
Return sCountry
End Get
Set(ByVal value As String)
sCountry = value
End Set
End Property
Private iViews As Integer
Public Property Views() As Integer
Get
Return iViews
End Get
Set(ByVal value As Integer)
If IsNothing(value) Or IsDBNull(value) Then
iViews = 0
Else
iViews = value
End If
End Set
End Property
Private iRating As Integer
Public Property Rating() As Integer
Get
Return iRating
End Get
Set(ByVal value As Integer)
If IsNothing(value) Or IsDBNull(value) Then
iRating = 0.0
Else
iRating = value
End If
End Set
End Property
Private dDateAdded As DateTime
Public Property DateAdded() As DateTime
Get
Return dDateAdded
End Get
Set(ByVal value As DateTime)
dDateAdded = value
End Set
End Property
Private sAffiliateLink As String
Public Property AffiliateLink() As String
Get
Return sAffiliateLink
End Get
Set(ByVal value As String)
sAffiliateLink = value
End Set
End Property
Private sAffiliateID As String
Public Property AffiliateID() As String
Get
Return sAffiliateID
End Get
Set(ByVal value As String)
sAffiliateID = value
End Set
End Property
Private iAddedBy As Integer
Public Property AddedBy() As Integer
Get
Return iAddedBy
End Get
Set(ByVal value As Integer)
iAddedBy = value
End Set
End Property
Private iImage As Integer
Public Property Image() As Integer
Get
Return iImage
End Get
Set(ByVal value As Integer)
iImage = value
End Set
End Property
Private iThumbnail As Integer
Public Property Thumbnail() As Integer
Get
Return iThumbnail
End Get
Set(ByVal value As Integer)
iThumbnail = value
End Set
End Property
Private iModifiedBy As Integer
Public Property ModifiedBy() As Integer
Get
Return iModifiedBy
End Get
Set(ByVal value As Integer)
iModifiedBy = value
End Set
End Property
Private dtModifiedTimeUtc As DateTime
Public Property ModifiedTimeUtc() As DateTime
Get
Return dtModifiedTimeUtc
End Get
Set(ByVal value As DateTime)
dtModifiedTimeUtc = value
End Set
End Property
Private sSource As String
Public Property Source() As String
Get
Return sSource
End Get
Set(ByVal value As String)
sSource = value
End Set
End Property
Private iModuleID As Integer
Public Property ModID() As Integer
Get
Return iModuleID
End Get
Set(ByVal value As Integer)
iModuleID = value
End Set
End Property
Private iPortalID As Integer
Public Property PortID() As Integer
Get
Return iPortalID
End Get
Set(ByVal value As Integer)
iPortalID = value
End Set
End Property
有什么办法解决这个问题吗?
Product或继承链中的某个成员可能未初始化。这很容易被忽略,尤其是在VB.NET中。
使用Newtonsoft.Json类(可通过NuGet获得)进行序列化:
Return Request.CreateResponse(HttpStatusCode.OK, JsonConvert.SerializeObject(oProduct))
相关文章:
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 采用 ISO-8601 格式的 .NET WebService JSON 日期
- 与JQueryMobile中基于REST的JSON WebService的连接
- 在不使用XMLHTTPRequest的情况下调用webservice并在Javascript中获取JSON响应
- 使用json调用webService在Titanium中会出现错误,但使用curl从终端调用webService效果良好
- 如何使用javascript从asp.net webservice中使用Json数据
- 发送JSON对象到.net webservice时出现内部服务器错误
- 当用于ajax调用webservice的数据类型为json "时,如何将成功函数的结果与字符串进行比较
- 将PHP webservice json响应发送给javascript
- 从asp.net Webservice生成的无效JSON
- 在asp.net webservice中返回json
- 当webservice调用解析JSON对象时,在.net中究竟发生了什么?
- 如何从外部服务器调用C#WebService中的JSON方法
- 正在将Class对象转换为WebService的Json
- xmlHttp.responseText不能从json webservice返回数据