C# 使用同名属性和数组反序列化JSON(Newtonsoft)
我得到了这个json结果:C# 使用同名属性和数组反序列化JSON(Newtonsoft),c#,json,C#,Json,我得到了这个json结果: {"status":"1","message":"OK","result":{"status":"0"}} 我想获取0状态 我的代码: public class getTXStatus { [JsonProperty("result")] public string status { get; set; } } public void GetTXStatus() { StartCoro
{"status":"1","message":"OK","result":{"status":"0"}}
我想获取0状态
我的代码:
public class getTXStatus
{
[JsonProperty("result")]
public string status { get; set; }
}
public void GetTXStatus()
{
StartCoroutine(GetTXStatusAsync($"https://api.blablabla"));
}
IEnumerator GetTXStatusAsync(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
var result = request.downloadHandler.text;
getTXStatus data = JsonConvert.DeserializeObject<getTXStatus>(result);
Debug.Log(result);
ethTXStatus = data.status;
}
公共类getTXStatus
{
[JsonProperty(“结果”)]
公共字符串状态{get;set;}
}
公共无效GetTXStatus()
{
Start例程(GetTXStatusAsync($)https://api.blablabla"));
}
IEnumerator GetTXStatusAsync(字符串url)
{
UnityWebRequest=UnityWebRequest.Get(url);
生成返回请求。SendWebRequest();
var result=request.downloadHandler.text;
getTXStatus data=JsonConvert.DeserializeObject(结果);
Debug.Log(结果);
ethTXStatus=data.status;
}
获取此错误:
public class getTXStatus
{
[JsonProperty("result")]
public string status { get; set; }
}
public void GetTXStatus()
{
StartCoroutine(GetTXStatusAsync($"https://api.blablabla"));
}
IEnumerator GetTXStatusAsync(string url)
{
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
var result = request.downloadHandler.text;
getTXStatus data = JsonConvert.DeserializeObject<getTXStatus>(result);
Debug.Log(result);
ethTXStatus = data.status;
}
JsonReaderException:解析时遇到意外字符
值:{.Path'result',第1行,位置39。
Newtonsoft.Json.JsonTextReader.ReadStringValue
(Newtonsoft.Json.ReadType ReadType)(位于
:0)
Newtonsoft.Json.JsonTextReader.ReadAsString()(位于
:0)
如果我在没有属性“result”的情况下执行此操作,它将返回1(第一个状态)
要正确地反序列化上述json,需要使用以下两个类
public class Result
{
[JsonProperty("status")]
public string Status { get; set; }
}
public class RootObject
{
[JsonProperty("status")]
public string Status { get; set; }
[JsonProperty("message")]
public string Message { get; set; }
[JsonProperty("result")]
public Result Result { get; set; }
}
将json反序列化为RootObject
,并获得结果。状态
var jsonObj = JsonConvert.DeserializeObject<RootObject>(json);
string status = jsonObj.Result.Status; // status will be 0.
var jsonObj=JsonConvert.DeserializeObject(json);
string status=jsonObj.Result.status;//状态将为0。
当您使用jsonproperty时,您定义的是json中键的名称。此外,json中的结果是一个对象,而不是字符串。