如何在 ASP.NET 控制台应用程序中分离 JSON 数据?

How to separate JSON Data In ASP.NET Console Application?

我创建了一个网站API。它的主要目的是向另一台服务器发出请求并从该服务器获得响应。 我成功获得了特定服务器的响应。

我收到的回复(其 JSON 格式)如下。

{
    "id": "test@gmail.com",
    "active": 1,
    "is_logged": true,
    "token": "hsja3t56yJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InRlc3RAZHZlby5jb20iLCJwYXNzd29yZCI6InRlc3QyMDE4KyIsImV4cGlyZU9uIjoiMjAxOS0wNi0yMVQwNTozNzowOC4xODhaIn0.3wgGeL_HvcoEJJeEF7tj8jeXk2uIKpOoi9ewmK5yhteh",
    "status": "OK",
    "usertype": "TestUser",
    "msg": "Login Successfull."
}

我尝试使用拆分功能进行拆分

string[] sep = response.Split(',');

foreach (string any in sep)
    Console.WriteLine(any);

//string[] colon = sep[0].Split(':');
string[][] colon = sep.Select(x => x.Split(':')).ToArray();

//int count = colon.Count();
for (int i = 0; i <= colon.Length; i++)
{
     Console.WriteLine(colon[i][0]);
     Console.WriteLine(colon[i][1]);           
}

还有其他方法来分隔响应吗?我还将所有字段用于其他目的。

通过添加 NuGet 包使用 Newtonsoft.json.dll, 然后将响应转换为 json object

JObject jo = JObject.Parse(searchCondition);

foreach (JToken child in jo.Children()) {
    var prop = child as JProperty;
    if (prop.Value != null && !string.IsNullOrEmpty(prop.Value.ToString())) {
        string name=prop.Name;
        string value = prop.Value;
        //You can now do whatever with the values like put in a list of object
    }
}

根据您的回答创建 Class 属性:

    public class UserData
    {
        public string id { get; set; }
        public int active { get; set; }
        public bool is_logged { get; set; }
        public string token { get; set; }
        public string status { get; set; }
        public string usertype { get; set; }
        public string msg { get; set; }
    }

读取响应数据时,使用JsonConvert.DeserializeObject

    string response = "{\"id\":\"test @gmail.com\",\"active\":1,\"is_logged\":true,\"token\":\"hsja3t56yJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InRlc3RAZHZlby5jb20iLCJwYXNzd29yZCI6InRlc3QyMDE4KyIsImV4cGlyZU9uIjoiMjAxOS0wNi0yMVQwNTozNzowOC4xODhaIn0.3wgGeL_HvcoEJJeEF7tj8jeXk2uIKpOoi9ewmK5yhteh\",\"status\":\"OK\",\"usertype\":\"TestUser\",\"msg\":\"Login Successfull.\"}";
    var responseData = JsonConvert.DeserializeObject<UserData>(response);

        //here the print in JSON Data

        Console.WriteLine("id : " + responseData.id);
        Console.WriteLine("active : " + responseData.active);
        Console.WriteLine("is_logged : " + responseData.is_logged);
        Console.WriteLine("token : " + responseData.token);
        Console.WriteLine("status : " + responseData.status);
        Console.WriteLine("usertype : " + responseData.usertype);
        Console.WriteLine("msg : " + responseData.msg);

这是我自己从 JSON 字符串中获取属性的示例,您可以使用它。

但首先,您需要安装此包:-> Newtonsoft.Json.Linq 以访问 JObject

using System;
using Newtonsoft.Json.Linq;

public class Program
{
     public static void Main()
     {      
           string jsonString = "{\"firstname\":\"Alex Wu\",\"lastname\":\"type\"}";
           JObject jObject = JObject.Parse(jsonString); 
           string firstname = (string)jObject.SelectToken("firstname");
           string lastname = (string)
           Console.WriteLine("{0}", firstname);
           Console.ReadLine();
     }
}