标签: jsondecoder

Swift:如何使用 SocketIO emmitWithAck 方法的响应

我正在使用 SocketIO 库将我的 iOS 应用程序连接到我的服务器。我想向服务器发送一些数据并在确认中返回一个 json 字典。我目前有这样的事情:

SocketHandler.mySocket.emitWithAck("my_event", [session, someInput]).timingOut(after: 3) {data in

       let myData = try? JSONDecoder().decode(myStruct.self, from: data)
Run Code Online (Sandbox Code Playgroud)

MyStruct 被定义为继承自 Decodable 的类,类似于我期望的 json 结构。

我收到以下错误:无法将类型“Any”的值转换为预期参数类型“数据”

知道如何解决这种类型转换吗?或者我需要走一条完全不同的路线吗?

(适用于 iOS 11.3 的 Swift 4.1)

干杯!

json socket.io swift jsondecoder

1
推荐指数
1
解决办法
2709
查看次数

使用 JSONDecoder 和 Swift 将 nil 转换为空字符串

我正在使用 Swift 4 和JSONDecoder. 我有以下结构:

struct Customer: Codable {
    var id: Int!
    var cnum: String!
    var cname: String!
}
Run Code Online (Sandbox Code Playgroud)

注意:这些字段不能是可选的。

现在我有一个 JSON 字符串:

[
    {
        "id": 1,
        "cnum": "200",
        "cname": "Bob Smith"
    },
    {
        "id": 2,
        "cnum": "201",
        "cname": null
    }
]
Run Code Online (Sandbox Code Playgroud)

为了对其进行解码,我使用以下命令:

let decoder = JSONDecoder()
let customers = try decoder.decode([Customer].self, from: json)
Run Code Online (Sandbox Code Playgroud)

除了空数据被转换为 nil 之外,一切正常。我的问题是,将传入的 nil 转换为空字符串(“”)的最简单方法是什么?

我想用最少的代码来做到这一点,但我不确定正确的方法以及在什么时候可以将 nil 转换为空字符串。预先谢谢你。

swift swift4 jsondecoder

0
推荐指数
1
解决办法
5412
查看次数

数据丢失 JSONDecoder

我正在尝试JSON使用Alamofireand将一系列字典加载到一个对象中SwiftyJSON,但是当下载数据时,我收到错误:

keyNotFound(CodingKeys(stringValue: "inProrgresss", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"inProrgresss\", intValue: nil) (\ "inProgresss\").",underlyingError: nil))。

本地化描述只是说数据丢失。我的 JSON 在这里,我的代码是这样的:

struct CompData: Codable {
    let inProrgresss: [[String: String]]
    let past: [[String: String]]
    let upcoming: [[String: String]]
}

func getData(url: URLConvertible) {
    SVProgressHUD.show()
    Alamofire.request(url).responseJSON { (dataResponse) in
        if dataResponse.result.value != nil {
            SVProgressHUD.dismiss()
            let JSONVar = JSON(dataResponse.result.value)
            let data = Data(dataResponse.data!)
            print(data)
            let decoder = JSONDecoder()
            do {
                let newData …
Run Code Online (Sandbox Code Playgroud)

json swift alamofire decodable jsondecoder

0
推荐指数
1
解决办法
122
查看次数

Swift 5 JSONDecoder 解码带有空格的字段名称的 JSON,例如“帖子标题”:“Hello World”

我目前正在使用 JSONDecoder 将 json 解析为 Swift 5 的对象。我现在才意识到 JSON 的一部分是错误的 JSON。它有一个带空格的字段名称:“帖子标题”。我不确定为什么会这样,我知道这样设置 JSON 是不好的做法,但在 JSON 方面我无能为力。有没有办法使用 JSON 解码器按原样获取该字段?

我已经对此进行了大量研究,但是由于这是一个错误的 json 问题,除了创建自定义解码器/解串器(我试图避免)之外,我在网上找不到太多东西。

JSON:

{
    "Post Title":"Hello World"
}
Run Code Online (Sandbox Code Playgroud)

结构:

struct Post: Decodable {
    var PostTitle: String
}
Run Code Online (Sandbox Code Playgroud)

解码器:

let jsonObject = try jsonDecoder.decode(Post.self, from: responseData)
Run Code Online (Sandbox Code Playgroud)

先感谢您!

json swift jsondecoder swift5

0
推荐指数
1
解决办法
1154
查看次数

在 Swift 中使用 JSONDecoder 解析 JSON 时将空值转换为默认字符串

我正在尝试使用 JSONDecoder 在 Swift 中解析一些 JSON,其中 JSON 偶尔会有空值。我想改为设置默认值。以下允许我处理它,但空值稍后会导致问题。

struct Book: Codable {
        let title : String
        let author: String?
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法做类似的事情(以下不编译),也许使用初始化程序?:

struct Book: Codable {
        let title : String
        let author: String ?? "unknown"
    }
Run Code Online (Sandbox Code Playgroud)

感谢您的任何建议

ios swift jsondecoder

0
推荐指数
1
解决办法
332
查看次数

如何在 Swift 中检索名称中包含破折号的 JSON 属性?

我刚刚在 Swift 中遇到一个问题,我还没有找到解决方案:当您在 Swift 中解码 JSON 数据(来自 API)时,您必须使用 JSONDecoder 对其进行解码,但这迫使我命名我的变量名称与我想要检索的 JSON 属性完全相同 - 问题是,JSON 属性的名称中有一个破折号(“饱和脂肪_100g”)。当然,由于破折号,我不能这样调用我的变量。这个问题有什么解决办法吗?

我想检索名为 saturated-fat_100g 的 JSON 属性

json ios swift jsondecoder

0
推荐指数
1
解决办法
440
查看次数

PHP:JSON_DECODE不适用于以下数据

我试图通过下面的代码解码这个json数据,但是它不起作用.

$data = 'VA_OnQueryData({"name":"John","id":"354902332592"});';
return json_decode($data);
Run Code Online (Sandbox Code Playgroud)

php jsondecoder

-2
推荐指数
1
解决办法
69
查看次数

标签 统计

jsondecoder ×7

swift ×6

json ×4

ios ×2

alamofire ×1

decodable ×1

php ×1

socket.io ×1

swift4 ×1

swift5 ×1