Home > front end >  Error during deserialization After parsing a value an unexpected character was encountered: Қ
Error during deserialization After parsing a value an unexpected character was encountered: Қ

Time:04-19

i am trying to Deserialize JSON Data. When deserializing I get an error "After parsing a value an unexpected character was encountered: Қ"

i am using 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; }
    }

CodePudding user response:

Your json string is invalid:

...\"\"Қарағанды облысының\r\nбілім басқармасы\" \r\nмемлеке...

After call to Regex.Unescape it will be "NameDoc":""Қарағанды облысының білім басқармасы" - which is invalid json string, remove one \" from the beginning and one \" from басқармасы

Actually JsonConvert shows you there is the problem with its error message: _ After parsing a value an unexpected character was encountered: Қ

To quickly validate some json string you can use some tools presented online, this one for example.

CodePudding user response:

Your json is not valid. It has quotes inside quotes. You have to fix the code that creates this json. If it is impossible, then you can deserialize it manually, using this code

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();
  • Related