我有以下格式的数据
field1 = "sometext";
field2 = text2;
field3 = (
{
uniqueId = 123;
},
{
uniqueId = 234;
}
);
field4 = "anothertext";
我需要像这样转换它
"field1":"sometext",
"field2":"text2",
"field3": [
{
"uniqueId":"123",
},
{
"uniqueId":"234",
}
],
"field4":"anothertext"
即替换' =' with:并在' ='之前和之后追加和结束字符串用"和;与','我该怎么办?
答案 0 :(得分:2)
看来你有一个包含几个字符串键/值对的字典,以及你试图转换为JSON的其他字典数组。
如果我对此不正确而完全错过了你想要完成的事情,我道歉。根据您期望的最终结果,这可能是一种更简单的方法。
您当前的初始字符串可以像这样存储:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"sometext", @"field1",
text2, @"field2",
myDictArray, @"field3",
@"anothertxt", @"field4"
, nil];
然后使用json转换转换为您想要的格式。
我有一个方法,我用它。
+(NSData*)jsonDatafromDictionary:(NSMutableDictionary*) dictionary
{
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary
options:0 // Pass 0 if you don't care about the readability of the generated string
error:&error];
if (error) {
NSString *errorDesc = [NSString stringWithFormat:@"Error creating json data from dictionary: %@", error.localizedDescription];
NSLog(@"ERROR: %@", errorDesc);
jsonData = nil;
return nil;
}
else
return jsonData;
}
要将数据视为NSString,您可以使用:
NSString *jsonString = [[NSString alloc]initWithData:webData encoding:NSUTF8StringEncoding];
要将json转换回字典格式,我使用此方法:
+(NSMutableDictionary*)dictionaryWithContentsOfJSONString:(NSString*)jsonString
{
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSMutableDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];
if (error)
NSLog(@"FAILED TO CREATE DICTIONARY FROM JSON STRING: %@", error.localizedDescription);
jsonData = nil;
error = nil;
return jsonDict;
}
-----编辑----- 根据您在下面的评论,这可能会让您入门。我唯一没有添加的是在需要的地方添加引号的代码......我需要考虑几分钟,这应该替换所有其他字符,就像你想要的那样。
注意:我没有测试过这个,但应该让你入门。
-(NSString*)convertString:(NSString*)ps
{
NSString *cs = @"";
cs = [ps stringByReplacingOccurrencesOfString:@";" withString:@","];
cs = [cs stringByReplacingOccurrencesOfString:@"(" withString:@"["];
cs = [cs stringByReplacingOccurrencesOfString:@")" withString:@"]"];
cs = [cs stringByReplacingOccurrencesOfString:@"=" withString:@":"];
return cs;
}