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