当前位置: 首页 > 知识库问答 >
问题:

将POST请求从对象解析为JSON

汤修贤
2023-03-14

我试图向服务器发出POST请求,但我遇到了一个问题。服务器似乎收到了请求,但我仍然在控制台中看到一个错误,建议将主体从Object更改为JSON

错误:SyntaxError:JSON中位于JSON位置0处的意外标记A。在XMLHttpRequest处解析()。装载(http://localhost:4200/vendor.js:69142:51)text:“它是用id=:23保存的新用户”proto:Object headers:HttpHeaders{normalizedNames:Map(0),lazyUpdate:null,lazyInit:ƒ}消息:“在对http://localhost:8191/api/user名称:“HttpErrorResponse”

例如,在我的cod中,我需要解决这个问题,因为当我提交它时,我试图导航到另一个页面。

createNewUser(user: User): Observable<Object>{
    return this.httpClient.post(`${this.createURL}`,user);
  }

  saveNewUser(){
    this.userService.createNewUser(this.user).subscribe( data =>{
      console.log(data);
      this.router.navigateByUrl('/list-user');
    },
    error => console.log(error));
  }

解决方案的一个较旧的Angular版本,它有@角/超文本传输协议在过去的旧版本的Angular,旧的10,我知道我能够做到这一点,就像下面,但现在不是请求选项我不能导入它,因为它需要@角/超文本传输协议:

addUser(user: User){
        let body = JSON.stringify(user);
        //pass the content type which is aoolication/JSON cintent
        let headers = new Headers({'Content-Type': 'application/json'});
        let options = new RequestOptions({headers: headers});
        //pass body and options
        return this._httpService.post("https://localhost:8443/api/user", body, options);
    }

你还有别的解决办法吗?

共有1个答案

越景天
2023-03-14

服务器似乎正在返回文本作为响应。默认情况下,HttpClient中的响应类型为json。您可以在请求中将其设置为text

试试下面的方法

addUser(user: User){
  let body = JSON.stringify(user);
  let headers = new Headers({'Content-Type': 'application/json'});
  let options = new RequestOptions({
    headers: headers,
    responseType: 'text'     // <-- set response type as `text`
  });

  return this._httpService.post("https://localhost:8443/api/user", body, options);
}

您可以直接在请求中传递该选项

html prettyprint-override">createNewUser(user: User): Observable<Object>{
  return this.httpClient.post(`${this.createURL}`, user, { responseType: 'text' });
}
 类似资料:
  • 问题内容: 我已经在Java中生成了一个包含JSON对象的HTMLPost请求,并希望在PHP中对其进行解析。 并在服务器上 我猜这是因为JSON特殊字符已编码。 json_decode返回空响应 知道为什么吗? 问题答案: 实际上,您不是在发布实体,而是在发布具有单个值对json =(encoded json)的HTTP表单实体()。 代替 尝试

  • 问题内容: 我正在尝试在此链接中使用示例 http://sharpdevpt.blogspot.com/2009/10/deserialize-json- on-c.html?showComment=1265045828773#c2497312518008004159 但是我的项目无法使用JavaScriptConvert.DeserializeObject进行编译,该示例说这是来自.net库,有

  • 你好,我有以下任务: 具有JSON对象的URL: *通过注释定义如何将JSON定义到Java列表中,并找到其中有“名称”的对象。 我认为问题是在不使用任何java库的情况下解析JSON。到目前为止,我已经开发了以下代码: 我在这里做的是我有一个JSONObject类,它将JSON属性存储在映射中,然后我想使用反射来填充任何类。 为了解析JSON,我尝试创建一个迷你FSM(:)),它使用For循环解

  • 我向我的flask应用所在的服务器发出了python post请求。它运行良好,我能够获得所需的数据。 但我想用POSTMAN测试API。我无法做到这一点,因为在某种程度上我对邮递员并不熟悉。 下面是我的python代码。 我正在努力解决这样一个问题:我试图发布到服务器上的数据和文件应该是原始json还是表单数据,或者是正文的x-www-form-urlencoded部分。还有实际的结构应该是什么

  • 问题内容: 我目前正在尝试将收到的JSON对象转换为具有相同属性的TypeScript类,但无法使其正常工作。我究竟做错了什么? 员工阶层 员工字符串 我的尝试 链接到打字稿游乐场 问题答案: 编译器允许您将返回的对象强制转换为类的原因是因为typescript基于结构子类型。 您实际上并没有的实例,而是拥有一个具有相同属性的对象(如在控制台中看到的)。 一个简单的例子: (操场上的代码) 没有错

  • 本文向大家介绍全面解析iOS中同步请求、异步请求、GET请求、POST请求,包括了全面解析iOS中同步请求、异步请求、GET请求、POST请求的使用技巧和注意事项,需要的朋友参考一下 先给大家分别介绍下iOS中同步请求、异步请求、GET请求、POST所代表的意思,然后在逐一通过实例给大家介绍。 1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进