Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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
C# 在xamarin studio上开发Newtonsoft.json时出错_C#_Json_Xamarin_Xamarin.ios - Fatal编程技术网

C# 在xamarin studio上开发Newtonsoft.json时出错

C# 在xamarin studio上开发Newtonsoft.json时出错,c#,json,xamarin,xamarin.ios,C#,Json,Xamarin,Xamarin.ios,嘿,伙计们,我在调试我的应用程序时遇到了这个错误, 我试图从sql数据库下载数据,并将其格式化为json字符串, 我想创建一个元素数组(A),其中包含他的信息(B1)(B2)(B3)(B4) 数组a1={b1,b2,b3} 数组a2={b1、b2、b3}等等 但此代码不起作用,我有以下错误: 已抛出Newtonsoft.json.jsonreaderexeption 分析布尔值时出错。路径“piatti[0]。disponibilita”,第9行,位置21 我很抱歉我的英语不好 public c

嘿,伙计们,我在调试我的应用程序时遇到了这个错误, 我试图从sql数据库下载数据,并将其格式化为json字符串, 我想创建一个元素数组(A),其中包含他的信息(B1)(B2)(B3)(B4)

数组a1={b1,b2,b3} 数组a2={b1、b2、b3}等等

但此代码不起作用,我有以下错误:

已抛出Newtonsoft.json.jsonreaderexeption 分析布尔值时出错。路径“piatti[0]。disponibilita”,第9行,位置21

我很抱歉我的英语不好

public class piatto //NOME DELL'ELEMENTO RIPETUTO
        {
            public List<piatto_details> piatti { get; set; }
        }

        public class piatto_details //DETTAGLI DELL'ELEMENTO
        {
            public string categoria { get; set;}
            public string nome { get; set; }
            public string prezzo { get; set; }
            public string dettagli { get; set; }
            public string img_url { get; set; }

            public bool disponibile { get; set; }
            public bool gluten_free { get; set; }

        }

        public string[,] GetTable(string url, int details)
        {
            string[,] lista_piatti;
            lista_piatti = new string[,] { };

            WebClient client = new WebClient();

            string value = client.DownloadString(url);
            Console.WriteLine(value);

            piatto piatt = JsonConvert.DeserializeObject<piatto>(value);

            int i = 0;
            int j = 0;

            foreach (var item in piatt.piatti)
                {
                    for (j = 0; j < details; j++)
                    {
                        switch (j)
                        {
                            case 0:
                            lista_piatti[i, j] = item.categoria;
                            break;
                            case 1:
                            lista_piatti[i, j] = item.nome;
                            break;
                            case 2:
                            lista_piatti[i, j] = item.prezzo;
                            break;
                            case 3:
                            lista_piatti[i, j] = item.dettagli;
                            break;
                            case 4:
                            lista_piatti[i, j] = item.img_url;
                            break;
                            case 5:
                            lista_piatti[i, j] = Convert.ToString(item.disponibile);
                            break;
                            case 6:
                            lista_piatti[i, j] = Convert.ToString(item.gluten_free);
                            break;
                            default:
                            Console.WriteLine("Error while switching details");
                            break;
                        }
                    }
                    j = 0;
                    i++;
                }

            return lista_piatti;

        }

您的问题可能是
“无麸质”:“false”
正在返回一个字符串值,其中需要布尔值…因此应该是
“无麸质”:false
。请尝试使用一个更强大的反序列化器,如microsoft的反序列化器:如果不起作用,您可以尝试在返回时手动切换该值


可能最简单的方法是将
public bool-grawn_-free{get;set;}
转换为
public string-grawn_-free{get;set;}
,特别是因为这对您的每个对象都会发生

问题在于JSON,它的格式不好

问题是:

'img_url': 'http://www.google.it',
'disponibilita': true;
'gluten_free' : 'false';
在“
disponibilita
”的“
true
”后面有一个分号。这应该是一个普通的逗号(使其成为对象的属性,就像所有其他属性一样)

正如前面指出的,JSON中的true和false(带引号和不带引号)之间也有区别。尽管我更希望它不带引号,但我认为serialiser可以正确地解析它(字符串到布尔值的转换)


总之,JSON输出是错误的。您可以使用JSON验证器对其进行验证。祝你好运

piatti[0]。disponsibilita是什么样子的?它是真/假值吗?正如@AdamWeitzman所建议的,请发布一个数据示例。编辑@Marklarter如果
disponsibilita
是一个
字符串
,您可以使用Newtonsoft序列化程序注册一个字符串到布尔转换器。看见也可以在读取数据库时将值转换为布尔值。
'img_url': 'http://www.google.it',
'disponibilita': true;
'gluten_free' : 'false';