Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin 如何将单个对象指定给列表?_Xamarin - Fatal编程技术网

Xamarin 如何将单个对象指定给列表?

Xamarin 如何将单个对象指定给列表?,xamarin,Xamarin,我正在使用API rest,它返回两种类型的json,对象和数组 对象(当数据库中只有一条记录时): 数组(当数据库中有多条记录时): 我用于使用json的代码如下所示: content = await response.Content.ReadAsStringAsync(); var token = JToken.Parse(content); if (token["complain"] is JArray) {

我正在使用API rest,它返回两种类型的json,对象和数组

对象(当数据库中只有一条记录时):

数组(当数据库中有多条记录时):

我用于使用json的代码如下所示:

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