import Foundation
struct Inner: Codable {
var value: String
}
struct Outer: Codable {
var inner: Inner
var outerValue: Int
}
// 编码为JSON数据
func encodeOuterToJSON(_ outer: Outer) -> Data? {
do {
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
return try encoder.encode(outer)
} catch {
print("编码错误: \(error)")
return nil
}
}
// 从JSON数据解码
func decodeOuterFromJSON(_ data: Data) -> Outer? {
do {
let decoder = JSONDecoder()
return try decoder.decode(Outer.self, from: data)
} catch {
print("解码错误: \(error)")
return nil
}
}
// 示例使用
let inner = Inner(value: "示例值")
let outer = Outer(inner: inner, outerValue: 42)
if let encodedData = encodeOuterToJSON(outer),
let decodedOuter = decodeOuterFromJSON(encodedData) {
print("解码后的实例: \(decodedOuter)")
}