我是C#的新手,我有一个HTTP响应,我通过
转换为json对象var result = await response.Content.ReadAsStringAsync();
dynamic jsonResponse = JsonConvert.DeserializeObject(result);
当我Debug.WriteLine((object)jsonResponse);
现在正在
{
"status": false,
"data":
{
"message": "Incorrect Username or Password",
"name": "Failed Login"
}
}
这是我所期待的。但问题在于我已经尝试过阅读
if ((object)jsonResponse.status != true){ //throws an error
...do stuff
}
上面的if语句抛出错误
操作数!=不能应用于boolean类型和对象
的操作数
通过更改代码并添加
if ((bool)(object)jsonResponse.status != true){ //throws an error
...do stuff
}
以上引发错误
无法将类型为NewtonSoft.Json.Linq.Jvalue的对象强制转换为system.boolean
我还需要添加什么?
但是当我跑步时
Debug.WriteLine((object)jsonResponse.status)
值为真。
我哪里错了?
答案 0 :(得分:2)
为您的回复添加课程
public class Data
{
public string message { get; set; }
public string name { get; set; }
}
public class LoginResponse
{
public bool status { get; set; }
public Data data { get; set; }
}
然后将响应转换为类
var response = JsonConvert.DeserializeObject<LoginResponse>(result);
并使用它
if(!response.status){
//do staff
}
答案 1 :(得分:1)
创建类并反序列化对它的响应:
public class Data
{
public string message {get;set;}
public string name {get;set;}
}
public class Response
{
public bool status {get;set;}
public Data data {get;set;}
}
var jsonResponse = JsonConvert.DeserializeObject<Response>(result);
if (!jsonResponse.status){
//your code
}
答案 2 :(得分:0)
这不是阅读Json
的正确方法。您可以在阅读文件时一个接一个地访问它们。
如下面的代码所示:
{
"status": false,
"data": {
"message": "Incorrect Username or Password",
"name": "Failed Login"
}
}
您需要像这样访问它:
JsonObject json = JsonObject.Parse(data);
var statusObject = json.GetNamedBoolean("status");
var dataObject = json.GetNamedObject("data");
var message = dataObject.GetNamedString("message");
var name = dataObject.GetNamedString("name");
// if you need to check whether the `Json` contains the object or not
// check it with
if (dataObject.ContainsKey("message"))
{
// get the value here as above
}