当前位置: 首页 > 知识库问答 >
问题:

使用Objective-C解析JSON字符串响应时出错

松和安
2023-03-14

我得到的回应是:

{“response”:{“id”:“R1”,“cmd”:[{“batchSize”:50,“startRow”:0,“name”:“doLogin”,“result”:“OK”,“attributes”:[{“name”:“businessName”,“type”:“String”},{“name”:“objId”,“type”:“Long”},{“name”;“type”;“String”},{“name”:“businessName”,“type”:“String”},{“name”;“type”;“{“name”;“name”;“objId”,“type”:“type”:“Long”;“name”;“name”;“name”;“{“name”;“type”;“String”;“String”;“firsttype”;“name”;“},“记录”:[“商业名称”:“帕洛阿尔托鸡蛋-分销商”,“objId”:“200”,“商业类型”:“D”,“名字”:“系统”],[“商业名称”:“帕洛阿尔托鸡蛋-分销商”,“objId”:“200”,“商业类型”:“D”,“名字”:“系统”],[“商业名称”:“帕洛阿尔托鸡蛋-分销商”,“objId”:“200”,“商业类型”:“D”,“名字”:“系统”,[“businessName\:\“Palo Alto Egg-分销商”,“objId\”:“200”,“businessType\”:“D”,“firstName\”:“System”]}}

现在的问题是。。。。。。。NSDictionary*json=[NSJSONSerialization JSONObjectWithData:(NSData*)对象选项:针织错误:

NSDictionary *first = [json objectForKey:@"response"];
NSArray *second = [first objectForKey:@"cmd"];
NSArray *attribute_array = [[second objectAtIndex:0] objectForKey:@"result"];
NSLog(@"Resultttttttttt=%@",attribute_array);

//Value of Result
NSString *resultVal = [NSString stringWithFormat:@"%@",attribute_array];

NSArray *record_array = [[second objectAtIndex:0] objectForKey:@"records"];

NSLog(@"Resultttttttttt Nisarg = %@",[[record_array objectAtIndex:0] objectForKey:@"firstName\\"]);

在最后一句话中,当我尝试获取键firstName的值时,它会出现错误,因为结构类似于“firstName\”而不是键“firstName”,因此任何使用“firstName\”解析字符串的建议Key......

共有2个答案

宋智明
2023-03-14

为什么要转述

[["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"],["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"],["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"]

它必须是:

[["businessName":"Palo Alto Egg - Distributor","objId":"200","businessType":"D","firstName":"System"],["businessName":"Palo Alto Egg - Distributor","objId":"200","businessType":"D","firstName":"System"],["businessName":"Palo Alto Egg - Distributor","objId":"200","businessType":"D","firstName":"System"]
范书
2023-03-14

您的JSON格式良好,但每条记录都是字符串列表,而不是字典,即您有

[
    "businessName\":\"Palo Alto Egg - Distributor",
    "objId\":\"200",
    "businessType\":\"D",
    "firstName\":\"System"
],

而不是

{
    "businessName": "Palo Alto Egg - Distributor",
    "objId": "200",
    "businessType": "D",
    "firstName": "System"
},

因此,[record_array objectAtIndex:0]是一个数组,而不是字典。

如果您可以控制JSON输出,那么应该检查代码并使其返回正确的格式。如果无法更改输出,并且不想对原始JSON数据进行复杂的字符串操作,那么最好的选择是:

NSString *firstName = NULL;

for (NSString *line in record) {
    if ([line hasPrefix:@"firstName"]) {
        firstName = [[line componentsSeparatedByString:@"\":\""] objectAtIndex:1];
    }
}

NSLog(@"%@", firstName);
 类似资料:
  • Objective-C编程语言中的字符串使用表示,其子类提供了几种创建字符串对象的方法。 创建字符串对象的最简单方法是使用Objective-C的标识符:来构造 - 下面代码中显示了创建和打印字符串的简单示例 - 编译和执行上面的代码时,它产生的结果如下 - Objective-C支持多种操作字符串的方法,如下列表 - 编号 方法 描述 1 返回接收者的大写字母表示。 2 返回给定数组位置的字符。

  • 本文向大家介绍Objective-C语言使用C字符串,包括了Objective-C语言使用C字符串的使用技巧和注意事项,需要的朋友参考一下 示例 转换NSString为const char使用-[NSString UTF8String]: -[NSString cStringUsingEncoding:]如果您的字符串使用非UTF-8编码,则也可以使用。 对于反向路径,请使用-[NSString

  • 问题内容: 我正在尝试解析一个JSON结构,如: 也就是说,JSON中的元素是带有转义json的字符串。 所以,我有一些类似的东西 但这崩溃了 这是因为.c的输出是字符串,而不是JSON。如何让jq解析此字符串? 我最初的解决方案是使用sed将替换所有的逃生字符(,和),但凌乱的,我认为有内置的方式做到这一点? 谢谢! 编辑:另外,这里可用的jq版本是: 我想我可以根据需要更新它。 问题答案: j

  • 问题内容: 我在C#中有一个类似以下的字符串。我需要遍历并创建HTML表输出。我尝试使用JSON.NET,但无法弄清楚如何检索键(名称,年龄和工作)。 表格格式为 任何帮助将不胜感激。 Dave提供的代码在这里是理想的解决方案..但是它适用于.NET 4.0 ..我已经将JSON.NET和以下代码用于.NET 3.5 使用Newtonsoft.Json.Linq; 问题答案: 您可以使用.NET

  • 问题内容: 我是使用AngularJS的新手,但在解析json响应时遇到问题。这是我正在使用的HTML代码: 这是使用AngularJS的Javascript代码: HTML使用服务器返回的JSON显示变量$ scope.response,但顶部列表中未显示任何内容。JSON的格式完美,但是$ scope.cars变量似乎始终为空。 我究竟做错了什么? 非常感谢, GA 问题答案: $ http.

  • 问题内容: 我有以下Json字符串 我正在尝试解析它并打印出每个名称和值-最简单的方法是什么?我尝试了jQuery.parseJSON但我不知道如何使用它 示例代码会很棒 问题答案: 结果是: jsFiddle示例:http://jsfiddle.net/bradchristie/XtzjZ/1/