从Controller返回时,字符串不充当有效的json对象

时间:2018-10-18 01:19:26

标签: c# angular typescript asp.net-core

我正在尝试从json响应中读取字符串,但是出现错误:

  

SyntaxError:位置JSON中意外的令牌c

我有一个控制器,它从数据库返回一个GUID作为字符串

def factorial(num):
    i = 2
    if num == 0:
        num = 1
        print(num) 
    elif num > 1:
       for i in range(i, num):
            num = num * i
    return num

def combinations(n,r):
    l = n-r
    nn = factorial(n)
    rn = factorial(r)
    ln = factorial(l)

    result = nn / (rn * ln)

    print(result)
    return result

def main():
    h = 52
    a = 0
    while a<4:
        combinations(h,a)
        a = a + 1

在Angular 2应用程序中,我正在订阅提供程序,该提供程序无法解析来自服务器的响应。

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

“我的提供者”代码如下:

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

“我的服务器”以正确的交易订单ID进行响应,响应如下所示:

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());
}

我有其他的api调用使用返回bool的相同代码返回,但返回正常,但是当我尝试返回字符串时,为什么会出现解析错误?

1 个答案:

答案 0 :(得分:2)

那不是有效的JSON对象,所以才收到该错误。 JSON对象以{开头,以}结尾。

如果您希望能够对其进行JSON反序列化,请使用:

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

请注意,如果返回的不是字符串,则ASP.NET Core应该对其进行JSON序列化(仍然是默认的序列化程序)。