JSON转Swift

将JSON数据自动转换为Swift结构体定义

JSON输入

Swift结构体


        

TDK设置

转换选项

JSON字符数

0

结构体字段数

0

生成代码行数

0

使用示例

JSON输入:

{
  "name": "JSON转Swift工具",
  "version": "1.0.0",
  "description": "将JSON数据转换为Swift结构体",
  "features": [
    "JSON语法验证",
    "一键转换",
    "结果复制"
  ],
  "settings": {
    "indentation": 2,
    "export": true
  },
  "stats": {
    "conversionCount": 1000,
    "averageTimeMs": 15.2
  },
  "created_at": "2023-10-01T12:00:00Z"
}

Swift结构体输出:

// ========================================================================
// Title: JSON转Swift工具配置
// Description: 存储JSON转Swift工具的配置信息和统计数据
// Keywords: JSON, Swift, 结构体, 配置, 统计
// ========================================================================
struct Root: Codable {
    @SerializedName("name")
    let name: String?
    
    @SerializedName("version")
    let version: String?
    
    @SerializedName("description")
    let description: String?
    
    @SerializedName("features")
    let features: [String]?
    
    @SerializedName("settings")
    let settings: Settings?
    
    @SerializedName("stats")
    let stats: Stats?
    
    @SerializedName("created_at")
    let createdAt: Date?
}

struct Settings: Codable {
    @SerializedName("indentation")
    let indentation: Int?
    
    @SerializedName("export")
    let export: Bool?
}

struct Stats: Codable {
    @SerializedName("conversionCount")
    let conversionCount: Int?
    
    @SerializedName("averageTimeMs")
    let averageTimeMs: Double?
}

// MARK: - JSON解析扩展
extension Root {
    static func fromJSON(jsonData: Data) -> Root? {
        let decoder = JSONDecoder()
        decoder.keyDecodingStrategy = .convertFromSnakeCase
        
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        decoder.dateDecodingStrategy = .formatted(dateFormatter)
        
        do {
            return try decoder.decode(Root.self, from: jsonData)
        } catch {
            print("JSON解析失败: \(error)")
            return nil
        }
    }
}