Xamarin 如何将单个对象指定给列表?
我正在使用API rest,它返回两种类型的json,对象和数组 对象(当数据库中只有一条记录时): 数组(当数据库中有多条记录时): 我用于使用json的代码如下所示:Xamarin 如何将单个对象指定给列表?,xamarin,Xamarin,我正在使用API rest,它返回两种类型的json,对象和数组 对象(当数据库中只有一条记录时): 数组(当数据库中有多条记录时): 我用于使用json的代码如下所示: content = await response.Content.ReadAsStringAsync(); var token = JToken.Parse(content); if (token["complain"] is JArray) {
content = await response.Content.ReadAsStringAsync();
var token = JToken.Parse(content);
if (token["complain"] is JArray)
{
var jsonArray = JsonConvert.DeserializeObject<RootArray>(content);
}
else if (token["complain"] is JObject)
{
var jsonObject = JsonConvert.DeserializeObject<RootObject>(content);
}
但如果它是一个对象,我不能,我得到以下错误:
无法将类型对象隐式转换为IEnumerable
最后我能够解决我的错误,只需创建一个列表并添加反序列化的json对象
var jsonObject = JsonConvert.DeserializeObject<RootObject>(content);
List<Complain> simpleList = new List<Complain>();
simpleList.Add(jsonObject.ComplainObject);
myList.ItemsSource = simpleList;
这是因为
list
此时是一个RootObject
,将该对象添加到列表/数组/集合中,然后将该集合分配给您的ItemSource
您对api有控制权吗?如果您这样做,我建议您不要从同一端点返回两个不同的对象。即使数据库中只有一条记录,它也应该始终返回数组。这应该可以让你不用做这些检查。你的帖子是一个观察。问题是什么?:-)如何将单个对象指定给列表?如何更改Json使其工作?如何更改RESTful API以返回不同的内容?或者只是:为什么它不工作?是的,我的问题是,如何将单个对象分配给列表?
content = await response.Content.ReadAsStringAsync();
var token = JToken.Parse(content);
if (token["complain"] is JArray)
{
var jsonArray = JsonConvert.DeserializeObject<RootArray>(content);
}
else if (token["complain"] is JObject)
{
var jsonObject = JsonConvert.DeserializeObject<RootObject>(content);
}
myList.ItemsSource = jsonArray.listArray;
var jsonObject = JsonConvert.DeserializeObject<RootObject>(content);
List<Complain> simpleList = new List<Complain>();
simpleList.Add(jsonObject.ComplainObject);
myList.ItemsSource = simpleList;
public class RootObject
{
[JsonProperty("complain")]
public Complain ComplainObject { get; set; }
}