嘿伙计们,我在调试我的应用时出现此错误, 我试图从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;
}
以下是consolle日志打印&#39;
'piatti':[
{
'categoria':'primi',
'nome':'pasta al bue',
'prezzo':'26',
'dettagli': 'il bue si chiamava rosario il bue dromedario',
'img_url': 'http://www.google.it',
'disponibilita': true;
'gluten_free' : 'false';
},
{
'categoria':'primi',
'nome':'pasta alla gallina',
'prezzo':'21',
'dettagli': 'la gallina rosita, morta purtroppo',
'img_url': 'http://www.google.it',
'disponibilita': false;
'gluten_free' : 'true';
},
{
'categoria':'secondi',
'nome':'gallina rosita',
'prezzo':'210',
'dettagli': 'l'altro pezzo della gallina rosita',
'img_url': 'http://www.google.it',
'disponibilita': true;
'gluten_free' : 'true';
}
]
}
答案 0 :(得分:1)
您的问题可能是'gluten_free' : 'false'
返回一个字符串值,其中需要一个布尔值...所以应该是'gluten_free' : false
而是...尝试使用像这里的微软一个更强的反序列化器: https://msdn.microsoft.com/en-us/library/tz8csy73(v=vs.110).aspx如果这不起作用,您可以尝试在返回时手动切换值
最简单的事情就是将public bool gluten_free { get; set; }
转为public string gluten_free { get; set; }
,特别是因为对象的每个人都会发生这种情况
答案 1 :(得分:0)
问题出在您的JSON中,格式不正确。
这是错的:
'img_url': 'http://www.google.it',
'disponibilita': true;
'gluten_free' : 'false';
“true
”之后的“disponibilita
”后面有分号。这应该是正常的逗号(将其作为对象的属性,就像所有其他属性一样)。
就像Adam所指出的那样,JSON中的true和'false'(有和没有引号)之间也存在差异。虽然我更喜欢它没有引号,但我认为序列化器会正确解析它(字符串到布尔转换)。
Bottomline,JSON输出错误。您可以使用JSON验证程序like this one对其进行验证。祝你好运!