You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON字符串转为iOS端=赋值格式属性列表字符串存入CoreData

问题解答

1. 目标格式的官方名称

你给出的第一份序列化格式的官方名称是 OpenStep 格式属性列表(Property List,常简称 plist),是苹果生态下三种标准 plist 存储格式的其中一种(另外两种为二进制 plist、XML 格式 plist),也是早期 Objective-C 代码里常用的对象明文序列化格式。

2. 转换实现逻辑

要实现 JSON 到目标格式的转换,只需要把 JSON 先解析为 Foundation 集合对象,再通过系统提供的属性列表序列化工具指定格式输出即可,步骤如下:

  • 首先将输入的 JSON 字符串反序列化为 Array 或 Dictionary 类型的 Foundation 集合对象
  • 调用 PropertyListSerialization 序列化集合对象,明确指定格式为 openStep
  • 将序列化生成的 Data 转换为字符串,即可直接存入 CoreData 兼容原有逻辑

3. Swift 可用代码示例

import Foundation

func convertJSONToOpenStepPlist(jsonString: String) -> String? {
    // 解析JSON为Foundation集合对象
    guard let jsonData = jsonString.data(using: .utf8),
          let jsonObject = try? JSONSerialization.jsonObject(with: jsonData) else {
        return nil
    }
    // 序列化为OpenStep格式plist数据
    guard let plistData = try? PropertyListSerialization.data(
        fromPropertyList: jsonObject,
        format: .openStep,
        options: 0
    ) else {
        return nil
    }
    // 转换为字符串返回
    return String(data: plistData, encoding: .utf8)
}

// 调用测试
let inputJSON = #"[{"name":"Apple","value":"fruit-1"},{"name":"Banana","value":"fruit-2"}]"#
if let targetFormatStr = convertJSONToOpenStepPlist(jsonString: inputJSON) {
    print(targetFormatStr) // 输出完全符合你要求的存储格式
}

4. 兼容说明

  • 生成的字符串完全兼容原有 NSString.propertyList() 读取逻辑,不需要修改老模块代码
  • 不要使用 JSONSerialization 直接输出字符串,必须经过属性列表序列化步骤才能得到目标格式

内容的提问来源于stack exchange,提问作者Glenn Posadas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:54:05