【问题标题】:convert python string to nsdictionary将python字符串转换为nsdictionary
【发布时间】:2013-06-06 18:56:18
【问题描述】:

我有一个 Python 的 tcp 服务器(使用twisted)和许多客户端,其中一个是 iOS。建立连接后,我的服务器会向客户端发送一个转换为字符串的 python 字典:

self.stringRep = str(self.myDictionary)
//somewhere else
self.connection.write(self.stringRep)

我的问题是如何在 Objective-C 客户端中将这个 Python 字典的字符串表示形式转换为 NSDictionary。我在 Objective-C 中将其表示为 NSString。

希望我提供了足够的详细信息。提前致谢。

编辑:如果可以在不转换为 JSON 的情况下完成此操作,那就太好了。如果没有其他办法,JSON 就可以了。

【问题讨论】:

  • 我不会使用str() 来制作字典的字符串表示形式。使用 json.dumps() 之类的东西,因为 JSON 是一种标准格式,其中包含用大量语言编写的库。
  • JSON 有什么问题?
  • 我对 JSON 有点缺乏经验。现在,我所有的客户端服务器交互都是通过 tcp 消息进行的,其中一些关键字由分隔符分隔。我不知道 JSON 表示是否有可能会破坏交互。无论如何,即使它在最好的情况下成功,为其他客户重构代码也需要时间。将来当一切正常时,我将转换为 JSON 并更改我的客户端-服务器交互机制。
  • JSON 表示几乎与 Python str() 表示相同:{"a": 2, "c": "\"'", "b": 3}
  • 是的,刚刚看到了……也许还是做 json 更好。

标签: python objective-c nsstring nsdictionary


【解决方案1】:

考虑使用XMLJSON 等标准格式。后者是首选。

如果您在旅途中需要一些东西,请考虑将字符串分成多个键值字符串,然后将结果中的每个字符串分解为您需要的内容。

NSString *string = @"{\'a\': \'10\', \'b\': \'20\'}";
NSArray *allEntries = [string componenetsSeparatedByString:@", "];
for(NSString *result in allEntries {
    NSArray *keyValueArray = [result componenetsSeparatedByString:@" : "];
    myDictionary [keyValueArray[0]] = keyValueArray[1];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多