在VB.NET中解析JSON
我试图解析以下以JSON返回的数据在VB.NET中解析JSON,.net,json,vb.net,parsing,.net,Json,Vb.net,Parsing,我试图解析以下以JSON返回的数据 { "Id":8151302, "Status":"Accepted", "Response":"0", "Price":"0.88", "Detail":"https://api.test.com/Redirect/Index 3eae1b02" } 这就是我尝试使用的: sresult = sresult.Replace("""""", String.Empty) If sresult.Contains("Sta
{
"Id":8151302,
"Status":"Accepted",
"Response":"0",
"Price":"0.88",
"Detail":"https://api.test.com/Redirect/Index 3eae1b02"
}
这就是我尝试使用的:
sresult = sresult.Replace("""""", String.Empty)
If sresult.Contains("Status"":""Accepted") Then
Dim parts = sresult.Replace("{", String.Empty).Replace("}", String.Empty).Split(",")
For i As Int16 = 0 To parts.Length - 1
If parts(i).StartsWith("Detail"":") Then
app.Outcome.RedirectURL = parts(i).Substring(12)
End If
If parts(i).StartsWith("Price"":") Then
lendertier.LenderComm = CDec(parts(i).Substring(11))
End If
If parts(i).StartsWith("Id") Then
app.Outcome.LenderReference = parts(i).Substring(15)
End If
Next
AcceptLead()
Return True
解析后返回的结果如下
网址:
参考:
价格:0.00英镑
它应该是:
网址:3eae1b02
身份证号码:8151302
价格:0.88
我也尝试过反序列化它。我得到了同样的结果:
Dim sReason As String = "Unknown"
Dim JSON As JavaScriptSerializer = New JavaScriptSerializer()
Dim SH As SandhurstData = JSON.Deserialize(Of SandhurstData)(sResult)
If SH.Status = "Accepted" Then
app.Outcome.RedirectURL = SH.RedirectURL
app.Outcome.LenderReference = SH.ApplicationRef
lendertier.LenderComm = SH.Commission
AcceptLead()
Return True
End If
sReason = SH.Reason
If Not SH.ValidationErrors Is Nothing Then
If (SH.ValidationErrors.Count > 0) Then
For Each e As String In SH.ValidationErrors
sReason &= e + "; "
Next
End If
End If
DeclineLead(sReason.Trim())
Return False
End Function
<Serializable> _
Public Class SandhurstData
Public Property Status() As String
Public Property RedirectURL() As String
Public Property Commission() As Decimal
Public Property ApplicationRef As String
Public Property ValidationErrors As List(Of String)
Public Property Reason As String
End Class
Dim sReason As String=“未知”
Dim JSON As JavaScriptSerializer=新JavaScriptSerializer()
Dim SH As SandhurstData=JSON.反序列化(SandhurstData)(sResult)
如果SH.Status=“已接受”,则
app.output.RedirectURL=SH.RedirectURL
app.output.LenderReference=SH.ApplicationRef
lenderier.LenderComm=SH.佣金
接受铅()
返回真值
如果结束
原因
如果不是SH.ValidationErrors,则什么都不是
如果(SH.ValidationErrors.Count>0),则
对于SH.ValidationErrors中的每个e作为字符串
原因&=e+“;”
下一个
如果结束
如果结束
DeclineLead(sReason.Trim())
返回错误
端函数
_
公共类桑德赫斯特数据
公共属性状态()为字符串
公共属性重定向URL()为字符串
公共财产委员会(十进制)
公共属性ApplicationRef作为字符串
公共属性验证错误列表(字符串)
作为字符串的公共属性原因
末级
正如评论中提到的,这是一条路。这非常容易做到:
Public Sub Main()
Dim json as String = "{'Id':'8151302', 'Status':'Accepted', 'Response':'0', 'Price':'0.88', 'Detail':'https://api.test.com/Redirect/Index 3eae1b02'}"
Dim deserialized = JsonConvert.DeserializeObject(of SandhurstData)(json)
Console.WriteLine(deserialized)
End Sub
Public Class SandhurstData
Public Id as String
Public Status as String
Public Response as String
Public Price as Double
Public Detail as String
Public Overrides Function ToString() as String
return String.Format("Id: {1} {0}Status: {2} {0}Response: {3} {0}Price: {4} {0}Detail: {5}", Environment.NewLine, Id, Status, Response, Price, Detail)
End Function
End Class
如果反序列化对象
方法抛出错误,很可能是因为JSON无效或与目标对象不匹配
fiddle示例:为什么不将其反序列化?您听说过一家名为“Newtonsoft”的公司吗?请看一看:即使做了一个测试,也会显示出有希望的结果。也许您应该共享一个指向完整JSON的链接<代码>SandhurstData与发布的位不匹配