При синтаксическом анализе значения обнаружен неожиданный символ: {.Дорожка - PullRequest
0 голосов
/ 01 марта 2019

Пытается получить значение Json, но постоянно выдает мне эту ошибку.

enter image description here

Это код:

string djson = JsonConvert.SerializeObject(e);


            var httpContent = new StringContent(djson, Encoding.UTF8, "application/json");

            var response = await client.PostAsync(Baseurl + "ex.api/api/exmaple/indi/getindicertification", httpContent);
            var jsonString = await response.Content.ReadAsStringAsync();
            var messageResponse = JsonConvert.DeserializeObject<Messages>(jsonString);
            var responseData = JsonConvert.DeserializeObject<ResultingRequest>(jsonString);

Я тоже тоже так пытаюсь, но продолжаю выдавать мне ошибку:

var responseData = JsonConvert.DeserializeObject<List<ResultingRequest>>(jsonString);

Мой класс модели выглядит так:

public class ResultingRequest : EvaluationResult
{
    public int Id { get; set; }
    public int UserId { get; set; }
    public DateTime RequestDate { get; set; }
    public int CertificationRequestStatus { get; set; }
    public int Language { get; set; }
    public string OGPCorrelationID { get; set; }
    public DateTime EmissionDate { get; set; }
    public object Reason { get; set; }
    public object Owner { get; set; }
    public string OGPATGNumber { get; set; }
    public object SolicitantName { get; set; }
    public object SolicitantIDNumber { get; set; }
    public DateTime ExpirationDate { get; set; }
    public bool CommitedToPRACSES { get; set; }
    public object Resolution { get; set; }
    public object Kiosco { get; set; }
    public object Comments { get; set; }
    public bool PorAcuerdo { get; set; }
    public int KioscoId { get; set; }
    public string EvaluationResult { get; set; }
}

А это Json:

{
"ResultingRequest": {
    "Id": 123 ,
    "UserId": 3456 ,
    "RequestDate": "09-20-2019",
    "CertificationRequestStatus": 4,
    "Language": 1,
    "OGPCorrelationID": "",
    "EmissionDate": "",
    "Reason": null,
    "Owner": null,
    "OGPATGNumber": "",
    "SolicitantName": null,
    "SolicitantIDNumber": null,
    "ExpirationDate": "",
    "CommitedToPRACSES": false,
    "Resolution": null,
    "Kiosco": null,
    "Comments": null,
    "PorAcuerdo": false,
    "KioscoId": 1,
    "EvaluationResult": "Negative"
},
"EvaluationResult": {
    "SolicitantIsMinor": false,
    "EvaluationResults": [],
    "IndividualHasNoCases": true,
    "IndividualDeceased": false,
    "CertificationType": "Negative",
    "RestrictedIndividual": false
},
"CertificationPDFBytes": "",
"SentByEmail": true,
"SentByEmailSuccess": true,
"Message": null,
"CertificationKey": ""
}

Я хочу получить значение "EvaluationResult" из ResultingRequest: {}.Что я делаю не так или чего мне не хватает?Я пытаюсь найти несколько способов поиска этого, но все время получаю сообщение об ошибке.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Ваш Json неверен, обратите внимание, что первый атрибут в вашем Json (Id и UserId пропущены кавычки) Попробуйте использовать его следующим образом:

[{
  "ResultingRequest": {
    "Id": "",
    "UserId": "",
    "RequestDate": "",
    "CertificationRequestStatus": 4,
    "Language": 1,
    "OGPCorrelationID": "",
    "EmissionDate": "",
    "Reason": null,
    "Owner": null,
    "OGPATGNumber": "",
    "SolicitantName": null,
    "SolicitantIDNumber": null,
    "ExpirationDate": "",
    "CommitedToPRACSES": false,
    "Resolution": null,
    "Kiosco": null,
    "Comments": null,
    "PorAcuerdo": false,
    "KioscoId": 1,
    "EvaluationResult": "Negative"
  },
  "EvaluationResult": {
    "SolicitantIsMinor": false,
    "EvaluationResults": [],
    "IndividualHasNoCases": true,
    "IndividualDeceased": false,
    "CertificationType": "Negative",
    "RestrictedIndividual": false
  },
  "CertificationPDFBytes": "",
  "SentByEmail": true,
  "SentByEmailSuccess": true,
  "Message": null,
  "CertificationKey": ""
}]
0 голосов
/ 01 марта 2019

Прежде всего, если вы десериализуете в List, ваш json-запрос должен быть массивом ResultingRequest, который сейчас не является, потому что это json-объект, вы должны добавить [] к вашему json-запросу.Пример:

[{
"ResultingRequest": {
    "Id": "",
    "UserId": "",
    "RequestDate": "",
    "CertificationRequestStatus": 4,
    "Language": 1,
    "OGPCorrelationID": "",
    "EmissionDate": "",
    "Reason": null,
    "Owner": null,
    "OGPATGNumber": "",
    "SolicitantName": null,
    "SolicitantIDNumber": null,
    "ExpirationDate": "",
    "CommitedToPRACSES": false,
    "Resolution": null,
    "Kiosco": null,
    "Comments": null,
    "PorAcuerdo": false,
    "KioscoId": 1,
    "EvaluationResult": "Negative"
}}]

Во-вторых, остальные json не будут анализироваться, поскольку они не являются объектом ResultingRequest, и, наконец, как они упоминают здесь, вы не указали некоторые значения свойств

Править: Так как вы говорите, что запрос отправляется API, и вы не хотите изменять формат json, то, что вы можете сделать следующим образом, проанализируйте JSON в объект JObject (поскольку ваш json это объект, а не массив), тогдавыберите объект, который вы хотите получить (в вашем случае это ResultingRequest), а затем десериализовать его следующим образом:

     var parsedObject = JObject.Parse(jsonString);
     var resultingRequestJson= parsedObject["ResultingRequest"].ToString();
     var responseData = JsonConvert.DeserializeObject<ResultingRequest>(resultingRequestJson);

Я сделал простой пример вашего файла JSON и получил некоторые другие дополнительные ошибки, и исправить это яизменил свойства Datetime на nullable, потому что ваш файл json возвращает пустой пример строки:

public DateTime? EmissionDate { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...