如何将 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 - 如何将输出作为对象保存到变量(不是承诺)

如何将Map转化为json字符串

如何在 Pentaho 中将上一步中的字段设置为 JSON 输出文件名?

返回字符串以及 Json 中的列表数据作为输出