Parsing in Json not in XML . VB.Net

霸气de小男生 提交于 2019-12-11 02:34:24

问题


At the moment I am using VB.Net. I build my string, post it out and then parse the results.

Parsing Example for 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

How would I parse a result sent back in JSON, here is an example of the result I want to parse in using VB : Can i not just get the data from the string and parse as normal XML.

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

回答1:


You can use the JSON.NET Library

Example in C#:

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

The RootObject should be your own class.




回答2:


You could use the .Net built in JavaScriptSerialiser

First add a reference to System.Web.Extensions and then

Imports System.Web.Script.Serialization

Followed by...

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



回答3:


in 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);          
      }
  }
  }



回答4:


The complete Answer

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


来源:https://stackoverflow.com/questions/25808129/parsing-in-json-not-in-xml-vb-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!