解析Json而不是XML。 VB.Net

时间:2014-09-12 12:14:47

标签: vb.net parsing json.net

目前我正在使用VB.Net。 我构建我的字符串,将其发布,然后解析结果。

XML的解析示例

Dim xml As New MWXMLDocument()
            Dim sReason As String = "Unknown"

            Try
                xml.LoadXml(sresult)
                If xml.SelectSimpleNode("AcceptedLead").InnerText = "true" Then
                    app.Outcome.RedirectURL = xml.SelectSimpleNode("result/redirecturl").InnerText

                    AcceptLead()
                    Return True
                End If

                sReason = xml.SelectSimpleNode("Reason").InnerText
            Catch ex As Exception
                sReason = "Error: " & ex.Message
            End Try
            DeclineLead(sReason)
            Return False
        End Function

我如何解析用JSON发回的结果,这里是我想用VB解析的结果的一个例子:我不仅可以从字符串中获取数据并解析为普通的XML。

{"RedirectUrl":"www.test.com","Commission":5.0000,"Status":"accepted"}

4 个答案:

答案 0 :(得分:2)

您可以使用JSON.NET Library

C#中的示例:

var result = JsonConvert.DeserializeObject<RootObject>(string json);

RootObject应该是你自己的班级。

答案 1 :(得分:1)

您可以使用.Net内置的JavaScriptSerialiser

首先添加对System.Web.Extensions的引用,然后添加

Imports System.Web.Script.Serialization

接下来......

Dim sExampleJSON As String = "{""RedirectUrl"":""www.test.com"",""Commission"":5.0000,""Status"":""accepted""}"

Dim MySerializer As JavaScriptSerializer = New JavaScriptSerializer()
Dim MyDictionary As Dictionary(Of String, Object) = MySerializer.Deserialize(Of Dictionary(Of String, Object))(sExampleJSON)

If MyDictionary.ContainsKey("RedirectUrl") Then
  Console.WriteLine(MyDictionary("RedirectUrl"))
End If

答案 2 :(得分:1)

在global.asax.cs

using System.Data.Entity;

   namespace RpManticSolAPI
  {
  public class WebApiApplication : System.Web.HttpApplication
  {
    protected void Application_Start()
    {
          GlobalConfiguration.Configure(WebApiConfig.Register);
          GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
          GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);          
      }
  }
  }

答案 3 :(得分:0)

完整答案

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("RedirectUrl") Then
                        app.Outcome.RedirectURL = parts(i).Substring(12)
                    End If
                    If parts(i).StartsWith("Commission") Then
                        lendertier.LenderComm = CDec(parts(i).Substring(11))
                    End If
                    If parts(i).StartsWith("ApplicationRef") Then
                        app.Outcome.LenderReference = parts(i).Substring(15)
                    End If
                Next
                AcceptLead()
                Return True
            End If
            If sResult.Contains("Reason:Duplicate") Then
                sReason = "Duplicate"
            ElseIf sResult.Contains("{Error:invalid credentials") Then
                sReason = "Error: Invalid credentials"
            ElseIf sResult.Contains("ValidationErrors:") Then
                sReason = "Invalid call:" + sResult.Replace("ValidationErrors:", String.Empty).Replace(",Status:rejected", String.Empty)
            Else
                sReason = "Rejected"
            End If
            DeclineLead(sReason)
            Return False