从json体中访问键的值

时间:2016-04-07 10:56:13

标签: json node.js swift

我已向node express server发送了一个帖子请求

    app.post('/addUsers', function (req, res) {

   var newuser =  req.body;
   console.log(newuser);
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
     data = JSON.parse( data );
     data["user4"] = newuser // how can i create  a user4 here currently i get an error as newsier is whole req body or something .
     console.log( data );
//       res.end(data);
       res.end( JSON.stringify(data));
   });
})

我已将newuser的值作为

控制台
{ '{"user4":{"password":"killer","id":4,"profession":"kuchbhi","name":"mukesh"}}': '' }

问题是如何获取user4的值,以便我可以将其添加到用户列表中。

我在swift中使用这本词典

                                   ["user4":["name" : "mukesh",
                                     "password" : "killer",
                                     "profession" : "kuchbhi",
                                     "id": 4]]

一旦知道它无效的json

,我就改成了这个
                                ["name" : "mukesh",
                                 "password" : "killer",
                                 "profession" : "kuchbhi",
                                 "id": 4]

并且知道我没有得到错误,但是在添加第四个用户之后,服务器响应的数据(我已经在Xcode控制台中打印出来)并不是我认为应该是的格式,它看起来像这样

["user2": {
    id = 2;
    name = suresh;
    password = password2;
    profession = librarian;
}, "user4": {
    "{\"password\":\"killer\",\"profession\":\"kuchbhi\",\"id\":4,\"name\":\"mukesh\"}" = "";
}, "user1": {
    id = 1;
    name = mahesh;
    password = password1;
    profession = teacher;
}, "user3": {
    id = 3;
    name = ramesh;
    password = password3;
    profession = clerk;
}]

我在user.son中手动添加所有其他条目。 这是登录到终端控制台的内容

  user4: { '{"password":"killer","profession":"kuchbhi","id":4,"name":"mukesh"}': '' } } 

我仍然觉得json不好或是吗?

非常感谢格式转换和服务器get / post thingy。

1 个答案:

答案 0 :(得分:0)

目前,您收到/出席的json无效。

一旦您真正设法从客户端接收有效的JSON,这将如下所示。

var u = {"user4":{"password":"killer","id":4,"profession":"kuchbhi","name":"mukesh"}};

对于任何json,您可以使用命令

获取其密钥
var theKeys = Object.keys(u);

在上面的示例中,整个JSON只有一个键,因此变量theKeys的内容为[ 'user4' ]。因此,您可以通过查看theKeys[0]

来访问所需的用户名

同样,您可以使用命令

获取内部json文档的属性
Object.keys(u[theKeys[0]]);

将返回[ 'password', 'id', 'profession', 'name' ]

修改

根据下面的评论,以下代码可能会帮助您从客户端正确发送json对象。

NSDictionary *aDictionary = @{
    @"user4": @{@"password": @"killer",
                @"id": @4,
                @"profession": @"kuchbhi"
              }};

NSError * error;
NSData * theData = [NSJSONSerialization dataWithJSONObject:aDictionary options:0 error:&error];
NSString * newStr = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding];

NSLog(@"body: %@", newStr);
[newStr release];

以下是使用swift正确发送json的解决方案:https://stackoverflow.com/a/31938246/1355058