Строка не действует как действительный объект json при возврате из контроллера - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь прочитать строку из ответа json, однако получаю сообщение об ошибке:

SyntaxError: Неожиданный токен c в JSON в позиции

У меня естьконтроллер, который возвращает guid в виде строки из базы данных

[HttpPost("TransactionOrderId/{id}")]
public async Task<string> TransactionOrderId(int id)
{
    return await this._service.GetTransactionOrderId(id);
}

В моем приложении Angular 2 я подписываюсь на моего провайдера, который не может разобрать мой ответ с моего сервера.

this.meetingsProvider.getTransactionOrderId(this.meetingId).subscribe((transactionId: string) => {
    this.transactionOrderId = transactionId;
});

И код моего провайдера выглядит следующим образом:

getTransactionOrderId(meetingId: number): Observable<string> {

    const headers = new Headers();
    headers.append('Content-Type', 'application/json');

    return  this.http.post(`${this.apiUrl}/${this.route}/transactionOrderId/${meetingId}`, null, {
        headers: headers
    }).map(res => <string>res.json());
}

Мой сервер отвечает с правильным порядком транзакции, идентификатор ответа выглядит так:

status: 200
statusText: "OK"
type: 2
url: "http://localhost/api/meetings/transactionOrderId/4"
_body: "0c290d50-8d72-4128-87dd-eca8b58db3fe"

У меня есть другие вызовы API, использующиетот же код, который возвращает bool, который возвращает нормально, но когда я пытаюсь вернуть строку, я получаю ошибку синтаксического анализа, почему?

1 Ответ

0 голосов
/ 18 октября 2018

Это недопустимый объект JSON, поэтому вы получаете эту ошибку.Объект JSON начинается с { и заканчивается }.

Если вы хотите иметь возможность JSON-десериализации этого, используйте:

public async Task<JsonResult> TransactionOrderId(int id)
{
    return Json(await this._service.GetTransactionOrderId(id));
}

Обратите внимание, что если вы возвращаете что-либо, что не является строкой, ASP.NET Core должен JSON-сериализовать это(в любом случае это сериализатор по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...