我目前使用的是Blazor WebAssembly。这是我尝试用nuGet Newtonsoft反序列化时得到的错误。Json. '解析值时遇到意外字符:s.路径“”,行0,位置0。'
这是我的JSON文件:
[{
"Id": 1,
"Brand": "Aprilia",
"Modele": "RS 660",
"CC": 660,
"Nb Cylindre": 2,
"Config cylindre": "ligne",
"Couple": "66 Nm 8500",
"Puissance (kW)": "XXX",
"Puissance (cv)": "100 cv 10500",
"Poids sec (kg)": 169,
"Date sortie": 2023
}, {
"Id": 2,
"Brand": "Aprilia",
"Modele": "Tuono 660",
"CC": 660,
"Nb Cylindre": 2,
"Config cylindre": "ligne",
"Couple": "66 Nm 8500",
"Puissance (kW)": "XXX",
"Puissance (cv)": "95 cv 10500",
"Poids sec (kg)": 183,
"Date sortie": 2023
}]
我的对象:
public class MotoDTO
{
public int Id { get; set; }
public string Brand { get; set; }
public string Modele { get; set; }
public int CC { get; set; }
public int NbCylindre { get; set; }
public string ConfigCylindre { get; set; }
public string Couple { get; set; }
public string PuissanceKW { get; set; }
public string PuissanceCv { get; set; }
public int PoidsSecKg { get; set; }
public int DateSortie { get; set; }
}
最后,这是错误发生的地方:
try
{
var serializer = new JsonSerializer();
using (var sr = new StringReader(jsonFile))
{
using (var jsonTextReader = new JsonTextReader(sr))
{
jsonTextReader.SupportMultipleContent = true;
here --> while (jsonTextReader.Read())
{
var moto = serializer.Deserialize<MotoDTO>(jsonTextReader);
_motos.Add(moto);
}
}
}
}
catch (Exception ex)
{
string msg = ex.Message;
}
有人能帮帮我吗谢谢
我得到了这里的代码https://stackoverflow.com
using System;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string json = @"
{'ItemName':'8','Id':1}
{'ItemName':'9','Id':2}
";
var items = new List<Item>();
var serializer = new JsonSerializer();
using (var sr = new StringReader(json))
{
using (var jsonTextReader = new JsonTextReader(sr))
{
jsonTextReader.SupportMultipleContent = true;
while (jsonTextReader.Read())
{
var data = serializer.Deserialize<Item>(jsonTextReader);
items.Add(data);
}
}
}
foreach (Item item in items)
{
Console.WriteLine($"{item.Id}: {item.ItemName}");
}
}
}
public class Item
{
public string ItemName { get; set; }
public int Id { get; set; }
}
}
2条答案
按热度按时间wixjitnu1#
您的Dto属性名称与json数据不匹配。你想反序列化为一个Dto,但你的json数据是一个数组。以下是您可以取消零化的人:
调整后的DTO
现在,为了从wwwroot文件夹中获取文件,您必须使用httpClient
请确保HttpClient已在应用程序中注册
u3r8eeie2#
你没有任何多行,它只是一个json数组,所以既然你使用的是 www.example.com
如果出于某种原因,你想要一些异步的东西,最好使用System。Text.Json