0

我需要从 NSString 创建一个 JsonString,而 ObjC 中没有任何键。所有教程都讨论了 NSDictionary 或 NSData 的序列化。

我的字符串就像@“fr-FR”。我正在寻找的结果就像@"{"fr-FR"}",但是是动态的。我自己不能这样做,因为我需要为不同类型的论点做同样的事情。

提前致谢 :)

4

4 回答 4

2

为了达到您要求的结果(即使它不是正确的 JSON),您可以尝试这样的事情:

NSString *myString = @"fr-FR"; // Or whatever
NSString *result = [NSString stringWithFormat:@"{\"%@\"}", myString];
于 2012-05-04T09:14:45.913 回答
1

您需要使用 JSON 框架/库,例如TouchJSON,然后您可以执行以下操作来编码您的NSString

theData = [[CJSONSerializer serializer] serializeObject:theString
                                                  error:&theError];

(来自这里的演示代码)。

于 2012-05-04T09:15:48.740 回答
1

如果您在 IOS 5 + 上开发,您可以使用 NSJSONSerialization 类

用你的字符串创建数据

NSString *myString = @"fr-FR"; // Or whatever
NSString *result = [NSString stringWithFormat:@"{%@}", myString];
NSData* data=[result dataUsingEncoding:NSUTF8StringEncoding];

然后使用

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error

创建您的 JSON 对象

(只是输入,未测试)

于 2012-05-04T09:20:10.870 回答
0

恕我直言,再次阅读 json 规范 ( http://www.json.org ) {"string"} 不是有效的 json 并且您在 c# 中使用的代码会产生无效的结果。但是,如果您需要与以这种方式操作的 c# 代码进行通信,您应该使用 JSON 库对字符串本身进行编码,然后其打包在花括号中。这样,您就可以获得特殊情况下 JSON 所需的所有转义(例如引号和诸如此类的东西),如果您只是手动添加引号和大括号,您就不需要这些转义。

于 2012-05-04T09:29:43.767 回答