При анализе значения обнаружен неожиданный символ: C. Путь '', строка 1, позиция 2 - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть строка json, которая создается с помощью следующего кода:

        string path1 = "C:\\Program Files (x86)\\IMAGE\\model\\net.mat";
        string path2 = "C:\\Program Files (x86)\\IMAGE\\png\\Lab.png";
        string path3 = "D:\\temp\\";
        string[] strs={path1 ,path2 ,path3};
        string json = JsonConvert.SerializeObject(strs);
        Console.WriteLine(json);

        List<string> paths = JsonConvert.DeserializeObject<List<string>>(json);
        Console.WriteLine(paths.Count);

, и при сериализации или десериализации я не вижу ошибки.Строка json выглядит следующим образом:

 "[\"C:\\\\Program Files (x86)\\\\IMAGE\\\\model\\\\net.mat\",\"C:\\\\Program Files (x86)\\\\IMAGE\\\\png\\\\Lab.png\",\"D:\\\\temp\\\\\"]"

Затем я передаю строку json в файл * .exe и десериализую ее.Полученная exe строка выглядит следующим образом, которая изменилась после прохода:

string json="[C:\\\\Program Files (x86)\\\\IMAGE\\\\model\\\\net.mat,C:\\\\Program Files 
    (x86)\\\\IMAGE\\\\png\\\\Lab.png,D:\\\\temp\\]";

Затем, когда я использую следующий код для десериализации, появляется ошибка. Код выглядит следующим образом:

List<string> paths = JsonConvert.DeserializeObject<List<string>>(json);

Ошибка:

Необработанное JsonReaderException: неожиданный символ, обнаруженный при разборе значения: C. Путь '', строка 1, позиция 2.

Интересно, почемуЭто так. Спасибо.

1 Ответ

0 голосов
/ 21 ноября 2018

Вы должны поместить одинарные кавычки вокруг путей.

string json = "['C: \\ Program Files (x86) \\ IMAGEDL \\ model \\ net-e-100.mat', C: \\ Program Files (x86) \\ IMAGEDL \\ Labelpng \\ Lab.png, D: \\ temp \\] ";

...