Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-c序列化字典与node js server_Objective C_Json_Node.js_Nsdictionary - Fatal编程技术网

Objective-c序列化字典与node js server

Objective-c序列化字典与node js server,objective-c,json,node.js,nsdictionary,Objective C,Json,Node.js,Nsdictionary,我有一个序列化的NSDictionary(事实上,它是一个inapp采购收据),我将它发送到node.js服务器: { "key 1" = "val 1"; "key 2" = "val 2"; } 我想在服务器端对其进行反序列化,所以到目前为止我已经完成了以下工作: var jsonStr = dictStr.replace(/"\s*=\s*"/g, "\":\"").replace(/";\s/g,"\",").replace(/,\s*}/,"}"); var obj = JSON

我有一个序列化的
NSDictionary
(事实上,它是一个inapp采购收据),我将它发送到
node.js
服务器:

{ "key 1" = "val 1";
  "key 2" = "val 2"; }
我想在服务器端对其进行反序列化,所以到目前为止我已经完成了以下工作:

var jsonStr = dictStr.replace(/"\s*=\s*"/g, "\":\"").replace(/";\s/g,"\",").replace(/,\s*}/,"}");
var obj = JSON.parse(jsonStr);
上面的代码工作得很好,但如果我考虑了所有可能的情况,我当然会担心。这就是为什么我更愿意为obj-c
NSDictionary
格式提供一个真正的解析器


可能有人能给我推荐一个吗?

试试。有,但我认为JSONKit仍然被证明是更快的。

一个序列化的
NSDictionary
在我看来几乎就是JSON,事实上,它非常接近JSON,所以我制作了一个简单的解析器(使用),将序列化的
NSDictionary
解析为JSON字符串。您可以查看。

我曾考虑在客户端序列化为JSON,但首先我想确保我不能在node.js端进行序列化。您可以尝试使用
NSKeyedArchiver
从字典中获取一个
NSData
对象,然后发送,然后解码。如果你只是发送一个简单的JSON字符串,那可能有点过头了。我发送的是我从苹果的inapp购买服务器上得到的东西——用base64编码的NSDictionary字符串(见问题中的示例)。我想知道的是,是否有任何解析器允许在JavaScript中解析这种格式(不是JSON)。@Loknar我试图解析密钥时出错。“应为'STRINGVALUE',但得到'STRING'”。似乎它期望NSDictionary的格式是{key=“val”},而不是{“key”=“val”}。嗨@pyetti,NSDictionary可能已经被重新定义了,idunno,当我5年前摆弄它的时候,{key1=“val”;key2=“val”}是NSDictionary的样子,请参见parseExample1.txt,但是如果你想要{“key1”=“val”;“key2”=“val”}相反,您只需要在parser.jison中编辑bison定义中的一行,keyname应该是STRING而不是STRINGVALUE,请参阅hope this helpsThanks@Loknar。我试试看。现在,我一直在使用OPs的原始正则表达式,它似乎在工作。