我将以下数据保存为NSString:

 {
    Key = ID;
    Value =         {
        Content = 268;
        Type = Text;
    };
},
    {
    Key = ContractTemplateId;
    Value =         {
        Content = 65;
        Type = Text;
    };
},

我想将此数据转换为包含键值对的NSDictionary.

I am trying first to convert the NSString to a JSON objects as follows :

 NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

However when I try :

NSString * test = [json objectForKey:@"ID"];
NSLog(@"TEST IS %@", test);

我得到的值是NULL.

有人能提出什么问题吗?

推荐答案

I believe you are misinterpreting the JSON format for key values. You should store your string as

NSString *jsonString = @"{\"ID\":{\"Content\":268,\"type\":\"text\"},\"ContractTemplateID\":{\"Content\":65,\"type\":\"text\"}}";
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

现在,如果您执行以下NSLog语句

NSLog(@"%@",[json objectForKey:@"ID"]);

结果将是另一本NSD字典.

{
    Content = 268;
    type = text;
}

希望这有助于获得清晰的理解.

Json相关问答推荐

当整个数组存储为字符串时,如何在Oracle中获取json数组的大小

如何在Power BI中集成API和JSON数据后将数据转换为表?

SWIFT中的网络经理

如何从一个700MB的json文件中列出PowerShell中的所有密钥?

JOLT转换以根据条件删除json对象

在 SQL 存储过程中使用参数 Select 值

如何将一个对象添加到多个对象中 JOLT

使用 map_values Select 包含空格的字符串未按预期工作

在这种情况下我如何实现 UnmarshalJSON 并且只为一个接口字段定义特殊行为?

使用 serde 和 csv crates 将嵌套的 json 对象序列化为 csv

无法使用 vue.js 访问 JSON 数组的项目

修改 boost::json::object 中的值

Powershell 7.2:ConvertFrom-Json - 日期处理

如何使用 boost::json::value 调用无参数函数

使用 jq 将键值行转换为 json

如何使用 gson 将数据保存在 json 文件中?

在 Android 中使用带有 post 参数的 HttpClient 和 HttpPost

在 JSON.NET 中序列化派生类时的字段顺序

Javascript:如何判断 AJAX 响应是否为 JSON

case 类只有一个字段时如何将json转为 case 类