Я сталкиваюсь со следующим сообщением об ошибке при попытке преобразовать строку json из ответа http в объект:
Исключение: при анализе значения обнаружен неожиданный символ: {.Путь '', строка 1, позиция 1. в Newtonsoft.Json.JsonTextReader.ReadStringValue (Newtonsoft.Json.ReadType readType) [0x002d8] in: 0 в Newtonsoft.Json.JsonTextReader.ReadAsString () [0x00000oft] в: 0 в Newtons.Json.JsonReader.ReadForType (Newtonsoft.Json.Serialization.JsonContract контракт, System.Boolean hasConverter) [0x000c2] в: 0 в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (объект Newtonsoft.Json.JsonReader, средство чтения System.TySystem.Boolean checkAdditionalContent) [0x000db] в: 0 в Newtonsoft.Json.JsonSerializer.DeserializeInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00054] в: 0 в Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.JsonЧитатель .JsonReader, System.Type objectType) [0x00000] in: 0 в Newtonsoft.Json.JsonConvert.DeserializeObject (значение System.String, тип System.Type, параметры Newtonsoft.Json.JsonSerializerSettings) [0x0002d] in: 0 в Newtonsoft.Json.JsonConvert.DeserializeObject [T] (System.Stringзначение, параметры Newtonsoft.Json.JsonSerializerSettings) [0x00000] в : 0 в Newtonsoft.Json.JsonConvert.DeserializeObject [T] (значение System.String) [0x00000] в долларах США в долларах США.System.String IdentificadorChamado) [0x0004b] в C: \ Users .. \ JmJmApp \ JmJmApp \ JmJmApp \ Helpers \ API.cs: 262
Вот код, который я использую:
public static object DetalhesChamado(string IdentificadorChamado)
{
/* inicio da requisição para a api rest */
var client = new RestClient("https://api.tomticket.com/chamado/8....8d65/0e8963d....7bfe25612ae78");
var request = new RestRequest(Method.GET);
request.RequestFormat = DataFormat.Json;
//request.AddHeader("content-type", "application/json; charset=utf-8");
IRestResponse response = client.Execute(request);
var encoding = response.ContentEncoding;
if (response.ResponseStatus == ResponseStatus.Completed) // Verifica se foi possivel acessar o servidor
{
try
{
//byte[] encodedBytes = Encoding.UTF8.GetBytes(response.Content);
var string_json = JsonConvert.DeserializeObject<string>(response.Content);
var resposta = JsonConvert.DeserializeObject<ChamadoData>(string_json);
//var resposta = JsonConvert.DeserializeObject<ChamadoData>( string_json );
return resposta;
}
catch (Exception e)
{
return false; // Falha ao deserializar
}
}
else
{
return false; // Sem conexão a internet
}
}
Вот ответ, показанный Debug Visual Studio:
{\"erro\":false,\"data\":{\"idchamado\":\"0e8963dde6ff227c5917bfe25612ae78\",\"protocolo\":80,\"titulo\":\"Veda\\u00e7\\u00e3o e desempenho- Garantia Vencida\",\"mensagem\":\"Mensagem: Est\\u00e1 vazando g\\u00e1s no meu ap\\nNome do Empreendimento :Copacabana\\n Numero da Unidade :43\",\"mimetype\":\"text\\/plain\",\"email_cliente\":\"teste@example.com\",\"prioridade\":1,\"tempotrabalho\":0,\"tempoabertura\":null,\"data_criacao\":\"21\\/11\\/2018 10:32\",\"deadline\":null,\"valoritemhora\":0,\"valoritemhoraextra\":0,\"valorfinal\":0,\"valorfinalextra\":0,\"valorfinalbruto\":0,\"nomecliente\":\"cliente teste\",\"tipochamado\":\"Externo\",\"avaliadoproblemaresolvido\":null,\"avaliadoatendimento\":null,\"avaliacaocomentario\":null,\"dataencerramento\":null,\"ultimasituacao\":3,\"dataultimasituacao\":\"21\\/11\\/2018 10:36\",\"descsituacao\":\"Respondido pelo cliente, aguardando resposta\",\"categoria\":null,\"departamento\":\"Suporte Usu\\u00e1rio\",\"atendente\":null,\"id_cliente\":\"teste@example.com\",\"status\":null,\"dataultimostatus\":null,\"nomeorganizacao\":null,\"campospersonalizados\":[],\"campospersonalizados_finalizados\":[],\"anexos\":[],\"historico\":[{\"origem\":\"C\",\"mensagem\":\"Passado 72 horas e ainda n\\u00e3o recebi retorno\",\"mimetype\":\"text\\/plain\",\"atendente\":null,\"data_hora\":\"21\\/11\\/2018 10:36\",\"hora_inicio\":null,\"hora_fim\":null,\"anexos\":[]}],\"historico_status\":[]}}"
Вот классы, которые я использую в качестве цели.
public class Historico
{
public string origem { get; set; }
public string mensagem { get; set; }
public string mimetype { get; set; }
public object atendente { get; set; }
public string data_hora { get; set; }
public object hora_inicio { get; set; }
public object hora_fim { get; set; }
public IList<object> anexos { get; set; }
}
public class ChamadoData
{
public string idchamado { get; set; }
public int protocolo { get; set; }
public string titulo { get; set; }
public string mensagem { get; set; }
public string mimetype { get; set; }
public string email_cliente { get; set; }
public int prioridade { get; set; }
public int tempotrabalho { get; set; }
public object tempoabertura { get; set; }
public string data_criacao { get; set; }
public object deadline { get; set; }
public int valoritemhora { get; set; }
public int valoritemhoraextra { get; set; }
public int valorfinal { get; set; }
public int valorfinalextra { get; set; }
public int valorfinalbruto { get; set; }
public string nomecliente { get; set; }
public string tipochamado { get; set; }
public object avaliadoproblemaresolvido { get; set; }
public object avaliadoatendimento { get; set; }
public object avaliacaocomentario { get; set; }
public object dataencerramento { get; set; }
public int ultimasituacao { get; set; }
public string dataultimasituacao { get; set; }
public string descsituacao { get; set; }
public object categoria { get; set; }
public string departamento { get; set; }
public object atendente { get; set; }
public string id_cliente { get; set; }
public object status { get; set; }
public object dataultimostatus { get; set; }
public object nomeorganizacao { get; set; }
public IList<object> campospersonalizados { get; set; }
public IList<object> campospersonalizados_finalizados { get; set; }
public IList<object> anexos { get; set; }
public IList<Historico> historico { get; set; }
public IList<object> historico_status { get; set; }
}
public class Historico
{
public bool erro { get; set; }
public Data data { get; set; }
}
Я искал решение в Google, но никто не помог мне.
У кого-нибудь есть идеи, как решить эту проблему?