訪問

2016-04-07 58 views
1

我已經發過帖子請求節點Express服務器訪問

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)); 
    }); 
}) 

從JSON體鍵的值和我有NEWUSER的價值控制檯

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

的問題是如何能我得到了user4的價值,以便我可以將它添加到用戶列表中。

我使用這本詞典中迅速

        ["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; 
}] 

所有其他條目都由我在users.son中手動添加。 這就是登錄到終端控制檯

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

我仍然認爲是不好的JSON是這樣嗎?

非常感謝新手格式轉換和服務器get/post thingy。

+0

您的JSON對象竟只有一個字段名爲: 「{ 「USER4」:{ 「密碼」: 「殺手鐗」,「ID 「:4,」職業「:」kuchbhi「,」名稱「:」mukesh「}}' 與值: '' 這是故意的嗎? –

+0

這不是一個有效的json。請確保您首先擁有有效的json。 – Gurpinder

回答

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]來訪問您想要的用戶名。

同樣,您可以使用命令

Object.keys(u[theKeys[0]]); 

將返回[ 'password', 'id', 'profession', 'name' ]得到內JSON文檔的屬性。

編輯

基於下面的評論,也許下面的代碼可以幫助你從客戶端發送正確的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]; 

這裏是一個解決方案,以正確發送JSON使用SWIFT:https://stackoverflow.com/a/31938246/1355058

+0

我發送NSData到httpBody,所以我應該把nsdata在服務器上,並將其轉換爲有效的JSON他們或那裏必須有一種方式來發送{「user4」:{「password」:「killer」,「id」 「職業」:「kuchbhi」,「名稱」:「mukesh」}}這個json在httpbody .so中,我可以這樣使用它。你能指導我嗎? –

+0

你應該從客戶端發送一個有效的json,然後它會看起來像上面那樣。最有可能的NSJSONSerialization是一個簡單的解決方案爲您的客戶端:http://stackoverflow.com/a/9885928/1355058 – MightyMouse

+0

我更新了上面的帖子給你一個字符串,你可以張貼在你的http請求的身體的例子。另外,既然你使用的是swift,也許這個更適合你http://stackoverflow.com/a/31938246/1355058,這樣你就可以使用swift在http請求的主體上發送一個json對象。 – MightyMouse