C# 在C中解析和验证JSON字符串#

C# 在C中解析和验证JSON字符串#,c#,json,api,parsing,C#,Json,Api,Parsing,我正在做一个兼职项目(我不是开发人员) 我试图实现的是验证登录请求响应中的status是NULL还是ERR,以便知道是否可以继续该过程 这是我目前掌握的代码: namespace EseyeSIMAPI { class Program { static void Main(string[] args) { var client = new RestClient("https://siam.eseye.com/Japi/Tigrillo"); var

我正在做一个兼职项目(我不是开发人员)

我试图实现的是验证登录请求响应中的
status
NULL
还是
ERR
,以便知道是否可以继续该过程

这是我目前掌握的代码:

namespace EseyeSIMAPI
{
class Program
{
    static void Main(string[] args)
    {
        var client = new RestClient("https://siam.eseye.com/Japi/Tigrillo");
        var loginRequest = new RestRequest("/login/", Method.POST);

        loginRequest.AddHeader("postman-token", "4e67ed4c-4130-4067-9539-d5ed6b6ad761");
        loginRequest.AddHeader("cache-control", "no-cache");
        loginRequest.AddHeader("content-type", "application/json");
        loginRequest.AddParameter("application/json", "{\r\n\"username\" : \"someusername\" ,\r\n\"password\" : \"somepassword\" ,\r\n\"portfolioID\" : \"someportfolioid\"\r\n}", ParameterType.RequestBody);

        IRestResponse response = client.Execute(loginRequest);

        client.ExecuteAsync(loginRequest, x =>
        {
            var json = x.Content;
        });

        Console.ReadLine();
    }
}
public class LoginStatus
{
    public Status status { get; set; }
    public string cookie { get; set; }
    public string permissions { get; set; }
    public string canActivate { get; set; }
}

public class Status
{
    public string errorCode { get; set; }
    public string errorMessage { get; set; }
    public string status { get; set; }
}
}
我收到以下JSON响应:

{
"status": {
"errorCode": "",
"errorMessage": "",
"status": "OK"
},
"cookie": "2p255ju6q1lfql594uppnq9lp2",
"permissions": "ULE",
"canActivate": "yes"
}

因此,我创建了一个类来处理JSON对象中的所有响应参数。我只是不确定如何准确地访问
状态

以下是我的评论,这是您使用以下命令专门处理代码的方式:

client.ExecuteAsync(loginRequest,x=>
{
var json=x.Content;
JavaScriptSerializer jsonSerializer=新的JavaScriptSerializer();
LoginStatus LoginStatus=jsonSerializer.Deserialize(json);
字符串errorCode=loginStatus.status.errorCode;
});

根据我的评论,以下是您将如何使用

client.ExecuteAsync(loginRequest,x=>
{
var json=x.Content;
JavaScriptSerializer jsonSerializer=新的JavaScriptSerializer();
LoginStatus LoginStatus=jsonSerializer.Deserialize(json);
字符串errorCode=loginStatus.status.errorCode;
});

那么您想将
x.Conent
反序列化为
LoginStatus
正确吗?如果正确,那么似乎有一个合适的answer@musefan是的。我希望能够访问每个键值对。如果您有解决问题的替代解决方案,请将其作为新答案发布。不要编辑问题以包含解决方案。是否要将
x.Conent
反序列化为
LoginStatus
是否正确?如果正确,则似乎有合适的解决方案answer@musefan是的。我希望能够访问每个键值对。如果您有解决问题的替代解决方案,请将其作为新答案发布。不要编辑问题以包含解决方案我遇到以下错误:无法将类型为“System.Collections.Generic.Dictionary`2[System.String,System.object]”的对象强制转换为类型为“EseyeSIMAPI.LoginStatus”。@KobbiGal:抱歉,我现在无法进行测试。您能试试我更新的应答错误CS0308吗?非泛型方法“JavaScriptSerializer.DeserializeObject(string)”不能与类型一起使用arguments@KobbiGal:好的,我现在修好了。这次也进行了测试。现在它肯定能工作了。为什么当我输入错误的凭证时,打印错误代码仍然不会返回任何结果?(它应该返回E0000)我收到以下错误:无法将类型为“System.Collections.Generic.Dictionary`2[System.String,System.object]”的对象强制转换为类型为“EseyeSIMAPI.LoginStatus”。@KobbiGal:抱歉,我现在无法进行测试。您能试试我更新的应答错误CS0308吗?非泛型方法“JavaScriptSerializer.DeserializeObject(string)”不能与类型一起使用arguments@KobbiGal:好的,我现在修好了。这次也进行了测试。现在它肯定能工作了。为什么当我输入错误的凭证时,打印错误代码仍然不会返回任何结果?(应该返回E0000)
client.ExecuteAsync(loginRequest, x =>
{
    var json = x.Content;

    JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
    LoginStatus loginStatus = jsonSerializer.Deserialize<LoginStatus>(json);

    string errorCode = loginStatus.status.errorCode;
});