反序列化过程中出错解析值后遇到意外字符:¥
Error during deserialization After parsing a value an unexpected character was encountered: Қ
我正在尝试反序列化 JSON 数据。反序列化时出现错误“在解析一个值后遇到了一个意外的字符:¥”
我正在使用 newtonsoft.json
class Program
{
static void Main(string[] args)
{
string json = "{\"protocolTable\":[{\"OrderNo\":\"08\",\"NameDoc\":\"Жергілікті маңызы бар балық \r\nшаруашылығы су айдындарын\r\nжәне (немесе) учаскелерін жануарлар \r\nдүниесін пайдаланушыларға бекіту туралы\"},{\"OrderNo\":\"07\",\"NameDoc\":\"Аңшылық шаруашылығын \r\nжүргізу үшін аңшылық алқаптарды \r\nжануарлар дүниесін пайдаланушыларға \r\nбекiтiп беру туралы\"},{\"OrderNo\":\"06\",\"NameDoc\":\"Спорттық ұйым атауларының\r\nөзгеруі туралы\"},{\"OrderNo\":\"05\",\"NameDoc\":\"Мемлекеттік мүлікті \r\nоблыстық коммуналдық \r\nмүлік деңгейінен\r\nаудандық коммуналдық\r\nмүлік деңгейіне \r\nберу туралы\"},{\"OrderNo\":\"04\",\"NameDoc\":\"Сыйға тарту шарты бойынша\r\nмүлік құқығына ие болу туралы\"},{\"OrderNo\":\"03\",\"NameDoc\":\"Мемлекеттік мекемелердің \r\nЕрежелерін бекіту туралы\"},{\"OrderNo\":\"02\",\"NameDoc\":\"\"Қарағанды облысының\r\nбілім басқармасы\" \r\nмемлекеттік мекемесінің \r\nЕрежесін бекіту туралы\"},{\"OrderNo\":\"01\",\"NameDoc\":\"Қарағанды облысының\r\nбілім бөлімдері мен білім беру\r\nұйымдарын қайта атау туралы\"}]}";
JsonConvert.DeserializeObject<Protocols>(Regex.Unescape(json));
}
}
public class Protocols
{
[JsonProperty("ProtocolTable")]
public List<ProtocolTable> protocolTable { get; set; }
}
public class ProtocolTable
{
public string OrderNo { get; set; }
public string NameDoc { get; set; }
}
您的 json 字符串无效:
...\"\"Қарағанды облысының\r\nбілім басқармасы\" \r\nмемлеке...
调用 Regex.Unescape 后将是 "NameDoc":""Қарағанды облысының білім басқармасы"
- 这是无效的 json 字符串,删除一个 \ " 从一开始和一个 \" 来自 басзармасы
实际上 JsonConvert 向您展示了它的错误消息存在问题:_ 解析值后遇到了意外字符:¥
要快速验证一些 json 字符串,您可以使用在线提供的一些工具,例如 this 一个。
您的 json 无效。它在引号内有引号。您必须修复创建此 json 的代码。如果不可能,那么您可以使用此代码手动反序列化它
List<ProtocolTable> protocolTable = json.Substring(json.IndexOf("[{")+2).Replace("}]}","").Split("},{")
.Select(i => i.Split("\",\""))
.Select(i => new ProtocolTable {
OrderNo=i[0].Substring(11),
NameDoc=i[1].Substring(10).TrimEnd('"')})
.ToList();
我正在尝试反序列化 JSON 数据。反序列化时出现错误“在解析一个值后遇到了一个意外的字符:¥”
我正在使用 newtonsoft.json
class Program
{
static void Main(string[] args)
{
string json = "{\"protocolTable\":[{\"OrderNo\":\"08\",\"NameDoc\":\"Жергілікті маңызы бар балық \r\nшаруашылығы су айдындарын\r\nжәне (немесе) учаскелерін жануарлар \r\nдүниесін пайдаланушыларға бекіту туралы\"},{\"OrderNo\":\"07\",\"NameDoc\":\"Аңшылық шаруашылығын \r\nжүргізу үшін аңшылық алқаптарды \r\nжануарлар дүниесін пайдаланушыларға \r\nбекiтiп беру туралы\"},{\"OrderNo\":\"06\",\"NameDoc\":\"Спорттық ұйым атауларының\r\nөзгеруі туралы\"},{\"OrderNo\":\"05\",\"NameDoc\":\"Мемлекеттік мүлікті \r\nоблыстық коммуналдық \r\nмүлік деңгейінен\r\nаудандық коммуналдық\r\nмүлік деңгейіне \r\nберу туралы\"},{\"OrderNo\":\"04\",\"NameDoc\":\"Сыйға тарту шарты бойынша\r\nмүлік құқығына ие болу туралы\"},{\"OrderNo\":\"03\",\"NameDoc\":\"Мемлекеттік мекемелердің \r\nЕрежелерін бекіту туралы\"},{\"OrderNo\":\"02\",\"NameDoc\":\"\"Қарағанды облысының\r\nбілім басқармасы\" \r\nмемлекеттік мекемесінің \r\nЕрежесін бекіту туралы\"},{\"OrderNo\":\"01\",\"NameDoc\":\"Қарағанды облысының\r\nбілім бөлімдері мен білім беру\r\nұйымдарын қайта атау туралы\"}]}";
JsonConvert.DeserializeObject<Protocols>(Regex.Unescape(json));
}
}
public class Protocols
{
[JsonProperty("ProtocolTable")]
public List<ProtocolTable> protocolTable { get; set; }
}
public class ProtocolTable
{
public string OrderNo { get; set; }
public string NameDoc { get; set; }
}
您的 json 字符串无效:
...\"\"Қарағанды облысының\r\nбілім басқармасы\" \r\nмемлеке...
调用 Regex.Unescape 后将是 "NameDoc":""Қарағанды облысының білім басқармасы"
- 这是无效的 json 字符串,删除一个 \ " 从一开始和一个 \" 来自 басзармасы
实际上 JsonConvert 向您展示了它的错误消息存在问题:_ 解析值后遇到了意外字符:¥
要快速验证一些 json 字符串,您可以使用在线提供的一些工具,例如 this 一个。
您的 json 无效。它在引号内有引号。您必须修复创建此 json 的代码。如果不可能,那么您可以使用此代码手动反序列化它
List<ProtocolTable> protocolTable = json.Substring(json.IndexOf("[{")+2).Replace("}]}","").Split("},{")
.Select(i => i.Split("\",\""))
.Select(i => new ProtocolTable {
OrderNo=i[0].Substring(11),
NameDoc=i[1].Substring(10).TrimEnd('"')})
.ToList();