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