【问题标题】:IOS - ObjC - JSONString From NSStringIOS - ObjC - 来自 NSString 的 JSONString
【发布时间】:2012-05-04 09:10:43
【问题描述】:

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

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

提前致谢:)

【问题讨论】:

  • {fr-FR} 不是有效的 JSON,所以我有点不确定你想在这里做什么
  • 我知道。我需要的结果与 c# JSonConvert.SerializeObject("fr-FR");这个函数的结果是 {"fr-FR"}
  • @user1147981 似乎您只想将字符串包裹在花括号中,对吧?如果是这种情况,请在下面查看我的答案。
  • 问题是您要求的不是有效的 JSON,因此没有 JSON 序列化框架将有任何帮助。 Alladinian 的答案看起来最能满足您的需求。

标签: objective-c ios json nsstring nsdictionary


【解决方案1】:

要达到您要求的结果(即使它不是正确的 JSON),您可以尝试以下操作:

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

【讨论】:

    【解决方案2】:

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

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

    (来自demo code here)。

    【讨论】:

      【解决方案3】:

      如果你在 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 对象

      (只是输入,未测试)

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2014-11-25
          • 1970-01-01
          • 1970-01-01
          • 2011-10-13
          • 1970-01-01
          • 1970-01-01
          • 2016-06-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多