Ошибка при использовании Newtonsoft.Json для анализа строки Json - PullRequest
8 голосов
/ 16 августа 2011

Моя строка JSON выглядит следующим образом. Обратите внимание, что в нем есть экранирующие символы.

string json = "\"{\\\"Status\\\":true,\\\"ID\\\":24501}\"";

Когда я использую метод Parse, как показано ниже, я сталкиваюсь с ошибкой, указанной ниже:

JObject o = JObject.Parse(json);

Ошибка чтения JObject из JsonReader. Текущий JsonReader элемент не является объектом: String

Как мне избавиться от этой ошибки или есть какой-то другой метод для анализа моей строки json и получения значений?

Ответы [ 6 ]

4 голосов
/ 16 августа 2011

Удалить первые и последние кавычки:

string json = "{\"Status\":true,\"ID\":24501}";

См. Формат Json здесь .

2 голосов
/ 16 августа 2011

Кажется, ваш объект закодирован дважды.Попробуйте:

string json = "{\"Status\":true,\"ID\":24501}";
1 голос
/ 22 июня 2015

Вам нужно что-то вроде этого

json = json.Replace(@"\", string.Empty).Trim(new char[]{'\"'})
0 голосов
/ 03 марта 2017

Сегодня была похожая проблема.Мое решение этого содержится в этом методе расширения (с использованием c#):

public static class StringExtensions
{
    public static string RemoveDoubleEncoding(this string text)
    {
        if(string.IsNullOrEmpty(text))
            return string.Empty;
        var result = text.TrimStart('\"').TrimEnd('\"');
        result = result.Replace(@"\", string.Empty);
        return result;
    }
}
0 голосов
/ 11 февраля 2016

Как отмечает SolarBear в своем комментарии, проблема заключается в двойном выходе.

Чтобы получить правильный формат, например:

string json = "{\"Status\":true,\"ID\":24501}";

Сделайте что-то вроде этого:

json = json.Replace("\\\\", "\\");
0 голосов
/ 08 мая 2014

в этом формате должен выглядеть примерно так:

string jsonNew = @"{'Status': True,'ID': 24501 }";
...