在Json中解析不使用XML。 VB.Net

问题描述:

目前我正在使用VB.Net。 我建立我的字符串,发布出来,然后解析结果。在Json中解析不使用XML。 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"} 
+1

的可能重复[如何解析在C#JSON?](http://*.com/questions/6620165/how-to-parse-json-in-c) – Neolisk 2014-09-12 12:49:12

+0

同时关注[System.Runtime.Serialization.Json](http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json(v = vs.110).aspx)。 – Neolisk 2014-09-12 12:49:49

完全其次回答

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 

您可以在C#中使用JSON.NET Library

例子:

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

RootObject应该是你自己的类。

你可以使用.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 
+0

如果sExampleJSON字符串值发生了变化,那么我刚刚添加了这个例子。 – Trifactor 2014-09-12 13:47:14

+0

那么你只是反序列化它。 MyDictionary将包含新的反序列化的JSON结果。 – 2014-09-12 21:05:28

+0

你能提供一个例子吗 – Trifactor 2014-09-15 11:51:05

中的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);   
     } 
    } 
    }