如何从JSON响应中获取值

如何从JSON响应中获取值

问题描述:

我必须对JSON响应来自数据库API。如何从JSON响应中获取值

我的JSON数据:

{ 
    "AccessToken":"1929c63a-9c72-4c0d-aea8-345c0b5411e9", 
    "LoggedInUserID":1, 
    "LookupData":{ 
     "LiquiditySources":[ 
      { 
       "ID":1, 
       "ParentID":null, 
       "Name":"testname1", 
       "SequenceNo":null, 
       "Caption":"test1", 
       "ConnectivityInfo": 
        "{\"Port\":11111,\"Username\":testuser1,\"Password\":\"password1\"}" 
      }, 
      { 
       "ID":2, 
       "ParentID":null, 
       "Name":"testname2", 
       "SequenceNo":null, 
       "Caption":"test2", 
       "ConnectivityInfo": 
        "{\"Port\":22222,\"Username\":testuser2,\"Password\":\"password2\"}" 
      } 
     ] 
    } 
} 

我想存储在不同的变量,这个响应值请人帮助我,这是我最后一年的项目。我正在使用Windows应用程序c#

+0

也许这可以帮助你 - http://stackoverflow.com/问题/ 6620165/how-can-i-parse-json-with-c – smoksnes

+0

无效的json,请至少提供正确的json – mybirthname

+0

thi s被解析json数据 –

你应该反序列化这个JSON类,然后做任何你想要的类对象。

您可以使用NewtonSoft.Json dll来达到此目的。如果你只想得到所有ConnectivityInfo值,也可以使用LINQ

List<LiquiditySource> ls = obj.LookupData.LiquiditySources; 
    foreach(LiquiditySource liquiditySource in ls) 
    { 
     string connectivityInfo = liquiditySource.ConnectivityInfo; 

    } 

public class LiquiditySource 
{ 
    public int ID { get; set; } 
    public object ParentID { get; set; } 
    public string Name { get; set; } 
    public object SequenceNo { get; set; } 
    public string Caption { get; set; } 
    public string ConnectivityInfo { get; set; } 
} 

public class LookupData 
{ 
    public List<LiquiditySource> LiquiditySources { get; set; } 
} 

public class SampleClass 
{ 
    public string AccessToken { get; set; } 
    public int LoggedInUserID { get; set; } 
    public LookupData LookupData { get; set; } 
} 

string json = "your json string"; 
SampleClass obj = JsonConvert.DeserializeObject<SampleClass>(json); 

你可以得到这类似。

List<string> lsConnectivityInfo = obj.LookupData.LiquiditySources.Select(c => c.ConnectivityInfo).ToList(); 

如果你想furthur deserilize connectivityInfo字符串对象并获取其属性,则必须再次反序列化到对象。 注意:您还必须修改您的JSON。

修改JSON:

{ 
    "AccessToken": "1929c63a-9c72-4c0d-aea8-345c0b5411e9", 
    "LoggedInUserID": 1, 
    "LookupData": { 
     "LiquiditySources": [{ 
      "ID": 1, 
      "ParentID": null, 
      "Name": "testname1", 
      "SequenceNo": null, 
      "Caption": "test1", 
      "ConnectivityInfo": "{\"Port\":11111,\"Username\":\"testuser1\",\"Password\":\"password1\"}" 
     }, { 
      "ID": 2, 
      "ParentID": null, 
      "Name": "testname2", 
      "SequenceNo": null, 
      "Caption": "test2", 
      "ConnectivityInfo": "{\"Port\":22222,\"Username\":\"testuser2\",\"Password\":\"password2\"}" 
     }] 
    } 
} 

作一次类:

public class ConnectivityInfo 
{ 
    public int Port { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 
} 

那么做到这一点:

foreach (LiquiditySource liquiditySource in ls) 
    { 
     string connectivityInfo = liquiditySource.ConnectivityInfo; 
     ConnectivityInfo connectivityInfoObj = JsonConvert.DeserializeObject<ConnectivityInfo>(connectivityInfo); 

    } 
+0

你忘了提及[json2csharp.com](http://json2csharp.com/)生成类 –

+1

还有其他的工具也可以做到这一点,它不是代码的一部分,我没有提到;) –

+0

我获得了其他值,但我如何获得ConnectivityInfo值? –