如何将 JSON 输出作为 NSString
Posted
技术标签:
【中文标题】如何将 JSON 输出作为 NSString【英文标题】:How to get JSON output as NSString 【发布时间】:2017-06-09 06:25:54 【问题描述】:在需要解析 JSON 的 Objective-C 中工作。所以解析成功后。
下面是我的代码:
-(instancetype)initWithDict:(NSDictionary *)dict
self = [super init];
if (self)
if ([dict isKindOfClass:[NSDictionary class]])
self.allKeysArray = [dict allKeys];
if ([self.allKeysArray containsObject:@"nDetail"])
if ([dict valueForKey:@"nDetail"])
_tempNutrientArray = [[[dict valueForKey:@"nDetail"] valueForKey:@"nTypeCode"] valueForKey:@"value"];
NSLog(@"N Array : @%@", _tempNutrientArray);
我需要将其转换为字符串格式的每个值。
我的输出:
N Array : @(
"ENER-",
FAT,
FASAT,
CHOAVL,
"SUGAR-",
"PRO-",
NACL
)
所需输出:
N Array : @("ENER-","FAT","FASAT","CHOAVL","SUGAR-","PRO-","NACL")
那么我应该如何将它转换为字符串格式。请帮帮我。
【问题讨论】:
将数组转回json字符串? 您想将数组转换为字符串还是将数组对象转换为字符串? 我希望数组中的每个元素都应该是字符串。 @aadityaa 使用由“”分隔的组件 @aditya 如果你想要它在字符串中,你可以在使用它的值时将它转换成字符串,比如NSString *desireValue = [tempNutrientArray[IndexPath] stringValue];
【参考方案1】:
您需要枚举整个数组以使所有对象成为正确的字符串。这可能是快速操作。
您可以使用此代码:
NSArray *arr = [NSArray arrayWithObjects:@"",@"", nil];
NSMutableArray *arrNew = [NSMutableArray new];
[arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop)
NSString *plainstr = [NSString stringWithFormat:@"%@",obj];
[arrNew addObject:plainstr];
];
arrNew 将是带有字符串的数组..
最好在获取时将其转换为字符串。
【讨论】:
【参考方案2】:数组转字符串
NSString * myString = [_tempNutrientArray componentsJoinedByString:@""];
如果你想要字符串之间的任何字符,请在componentsJoinedByString:@"GIVE_IT_HERE"
中给出它
【讨论】:
我需要这样的输出:数组:@(“ENER-”、“FAT”、“FASAT”、“CHOAVL”、“SUGAR-”、“PRO-”、“NACL”) 【参考方案3】:在您的情况下,您创建了一个变量来存储您的响应中的整个字符串,然后使用我的代码。
NSString *tempstring = @"ENER- FAT FASAT CHOAVL SUGAR- PRO- NACL";
NSArray *arr = [tempstring componentsSeparatedByString:@" "];
NSLog(@"%@",arr);
NSLog(@"First value : %@",[arr objectAtIndex:0]);
NSLog(@"Second value : %@",[arr objectAtIndex:1]);
NSLog(@"Third value : %@",[arr objectAtIndex:2]);
现在检查 arr 值,你得到了你想要的数组中的所有字符串。
输出:
(
"ENER-",
FAT,
FASAT,
CHOAVL,
"SUGAR-",
"PRO-",
NACL
)
First value : ENER-
Second value : FAT
Third value : FASAT
【讨论】:
是的,我用过这个,NSMutableArray *arr = [_tempNutrientArray componentsJoinedByString:@""];但收到警告,即初始化为 NSString 的指针类型不兼容。 @aadityaa 使用 Nsarray 而不是 NSMubtaleArray 。所以你明白了。 @aadityaa 现在检查一下,我成功了并运行了我的机器,我没有收到任何警告。 @aadityaa 你找到解决方案了吗?【参考方案4】:作为你需要的输出,你可以试试:
-(instancetype)initWithDict:(NSDictionary *)dict
self = [super init];
if (self)
if ([dict isKindOfClass:[NSDictionary class]])
self.allKeysArray = [dict allKeys];
if ([self.allKeysArray containsObject:@"nDetail"])
if ([dict valueForKey:@"nDetail"])
_tempNutrientArray = [[[dict valueForKey:@"nDetail"] valueForKey:@"nTypeCode"] valueForKey:@"value"];
NSString *finalString = @"";
[_tempNutrientArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop)
NSString *plainstr = [NSString stringWithFormat:@"%@",obj];
if (plainstr)
finalString = [finalString stringByAppendingString:plainstr];
];
NSLog(@"N Array : @%@", finalString);
【讨论】:
以上是关于如何将 JSON 输出作为 NSString的主要内容,如果未能解决你的问题,请参考以下文章
JSON文件将输出作为每一行的字典,需要从中创建一个DataFrame
将 Hadoop Pig 输出作为 JSON 数据发布到 URL?
Javascript Fetch API - 如何将输出作为对象保存到变量(不是承诺)