首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >swift JSONEncoder生成无效数据

swift JSONEncoder生成无效数据
EN

Stack Overflow用户
提问于 2022-11-27 12:11:19
回答 1查看 36关注 0票数 -2

我有一个简单的字符串在斯威夫特:

代码语言:javascript
复制
let str = "{"phone": "+79217463536","name": "skjfhkjdhg","username": "ksfhksdjhf"}"

我生成数据:

代码语言:javascript
复制
let data = str.data(.utf8)

然后将数据发送到request.httpBody = data,然后发送post请求。

当斯威夫特将字符串转换为数据时,它会添加一个字符"\",而服务器不理解我的json。

代码语言:javascript
复制
"{\"phone\": \"+79217463536\",\"name\": \"skjfhkjdhg\",\"username\": \"ksfhksdjhf\"}"

在蟒蛇身上,效果很好。请帮帮我,我需要将字符串转换成没有任何符号的数据,或者我需要发送没有数据的请求,并使用字符串发送请求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-27 19:31:33

不要以这种方式创建数据,这很容易出错。还有更好的方法。

  1. 创建一个保存数据的结构:

结构化模型:可编码{ let name: String let phone: String let username: String }

  1. 用适当的值实例化模型:

让模型=模型(名称:“这里的名称”,电话:“这里的电话”,用户名:“这里的用户名”)

  1. 从该模型创建数据:

让数据=尝试JSONEncoder().encode(model)

然后通过URLRequest发送这些数据。

并且您应该添加contenttype标题。否则,您的api将无法理解您正在发送的内容。

代码语言:javascript
复制
let url = URL(string: "plannerok.ru/api/v1/users/register/") 
var request = URLRequest(url: url!) 
request.httpMethod = "POST" 
request.httpBody = data
// add this
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let session = URLSession.shared 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74589901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档