我正在尝试从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的相同代码返回,但返回正常,但是当我尝试返回字符串时,为什么会出现解析错误?
答案 0 :(得分:2)
那不是有效的JSON对象,所以才收到该错误。 JSON对象以{
开头,以}
结尾。
如果您希望能够对其进行JSON反序列化,请使用:
public async Task<JsonResult> TransactionOrderId(int id)
{
return Json(await this._service.GetTransactionOrderId(id));
}
请注意,如果返回的不是字符串,则ASP.NET Core应该对其进行JSON序列化(仍然是默认的序列化程序)。