【问题标题】:Parsing and validating JSON string in C# [duplicate]在 C# 中解析和验证 JSON 字符串 [重复]
【发布时间】:2017-02-23 11:24:13
【问题描述】:

我正在从事一个业余项目(我不是开发人员)。

我想要实现的是验证statusNULL还是在登录请求响应中有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 对象中的所有响应参数。我只是不确定如何访问status

【问题讨论】:

  • 所以你想将x.Conent反序列化为LoginStatus,对吗?
  • 如果是这样,那么this question似乎有一个合适的答案
  • @musefan 是的。我希望能够访问每个键值对。
  • 如果您有其他解决方案可以解决您的问题,请将其作为新答案发布。不要编辑问题以包含解决方案

标签: c# json api parsing


【解决方案1】:

从我的 cmets 开始,这就是您使用 JavaScriptSerializer class 专门使用您的代码的方式:

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

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

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

【讨论】:

  • 我收到以下错误:无法将“System.Collections.Generic.Dictionary`2[System.String,System.Object]”类型的对象转换为“EseyeSIMAPI.LoginStatus”类型。
  • @KobbiGal:抱歉,我现在没有能力测试。你能试试我更新的答案吗
  • 错误 CS0308 非泛型方法 'JavaScriptSerializer.DeserializeObject(string)' 不能与类型参数一起使用
  • @KobbiGal:好的,我现在修好了。这次也进行了测试。它现在肯定有效。
  • 为什么当我输入错误的凭据时,打印错误代码仍然没有返回任何内容? (它应该返回 E0000)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 2013-04-14
相关资源
最近更新 更多