2014-10-06 82 views
2

所以我试图一次研究HTTP/TCP/IP协议,Nodejs,MongoJS和MongoDB。所以我试图找出Hapi Web框架的一些东西。我能够用我的iOS模拟器与服务器通信,但是,我似乎无法解析有效负载。我知道我可以使用URL中的参数发送信息,但我想使用有效载荷。Hapi - 如何解析有效载荷为JSON?

所以我最终将这个保存到Mongo中。

(
    { 
    "_id" = 5431f161bb859872034d2456; 
    "{\"userLastNameKey\":\"Kwon\",\"userEmailKey\":\"email\",\"userFirstNameKey\":\"Michael\",\"userUsernameKey\":\"username\",\"userPasswordKey\":\"password\"}" = ""; 
}, 
    { 
    "_id" = 5431fe5694ed4721046c1f8c; 
    "{\"userLastNameKey\":\"Kwon2\",\"userEmailKey\":\"email2\",\"userFirstNameKey\":\"Michael2\",\"userUsernameKey\":\"username2\",\"userPasswordKey\":\"password2\"}" = ""; 

这是我的呼叫代码。

// This will add a new user to the database 
function addUser(request, response){ 

    db.usersCollection.save(request.payload, function (err, saved){ 
     if(err || !saved) 
     { 
      console.log("User not saved"); 
     } else 
      { 
       console.log("User saved"); 
      } 
    }); 
} 

我的最终结果,我想尝试,并得到它是这样

(
    { 
    "_id" = 5431f161bb859872034d2456, 
    "userLastNameKey" = "Kwon", 
    "userEmailKey" = "email", 
    "userFirstNameKey"= "Michael", 
    "userUsernameKey" = "username", 
    "userPasswordKey" = "password", 
    } 
) 

这里是iOS的代码

NSDictionary *userData = [User userToDictionary: newUserInfo]; 
    NSData *userJSON = [NSJSONSerialization dataWithJSONObject: userData options: 0 error: nil]; 

NSURL *url = [NSURL URLWithString: urlString]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url]; 
[request setHTTPMethod: @"POST"]; 
[request addValue: @"application/json" forHTTPHeaderField: @"Content-Type"]; 

    // This will set up the url session 
    NSURLSessionConfiguration* config = [NSURLSessionConfiguration defaultSessionConfiguration]; 
    NSURLSession *session = [NSURLSession sessionWithConfiguration: config]; 

    NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest: request fromData: userJSON completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 

      if(error) 
      { 

      } else 
       { 

       } 

      }]; 

      [uploadTask resume]; 
     } 

任何人都知道我能做到这一点?

回答

1
{ 
    "_id" = 5431f161bb859872034d2456; 
    "userLastNameKey" = "Kwon"; 
    "userEmailKey" = "email"; 
    "userFirstNameKey"= "Michael"; 
    "userUsernameKey" = "username"; 
    "userPasswordKey" = "password"; 
} 

也就是说不是一个JSON对象。您需要使用逗号而不是分号。和冒号而不是等号。你的ID也不是十进制数,所以最好把它作为一个字符串。

你的对象将是这样的:

{ 
    "_id" : "5431f161bb859872034d2456", 
    "userLastNameKey" : "Kwon", 
    "userEmailKey" : "email", 
    "userFirstNameKey" : "Michael", 
    "userUsernameKey" : "username", 
    "userPasswordKey" : "password" 
} 

为了解析(格式良好的)JSON字符串,使用:var JSONObject = JSON.parse(JSONstring);

+0

确定这样的有效载荷有一个“=‘’”在它的结束。如果没有那部分,JSON解析就会很好。你知道可能在哪里=“”部分来自? – 2014-10-06 04:02:55

+0

你可以粘贴新的有效载荷吗? – xShirase 2014-10-06 04:26:56

+0

{'{“userLastNameKey”:“Kwon6”,“userEmailKey”:“email6”,“userFirstNameKey”:“Michael6”,“userUsernameKey”:“username6”,“userPasswordKey”:“password6”}':''} – 2014-10-06 04:28:13