Yahoo!提供什么样的数据? Messenger API返回请求?

时间:2013-11-26 07:45:19

标签: json node.js yahoo yahoo-api yahoo-messenger

我查看了Yahoo! Messenger API文档,了解如何获取访问令牌,我发现了这一点:

  

电话看起来像这样:

     

https://login.yahoo.com/WSLogin/V1/get_auth_token?&login=username&passwd=mypassword&oauth_consumer_key=consumerkey

     

此调用的结果是单个值,RequestToken

     

RequestToken=jUO3Qolu3AYGU1KtB9vUbxlnzfIiFRLP...

     

此令牌随后用于第二个请求,该请求将PART交换为OAuth访问令牌。您可以在此处找到有关获取访问令牌的标准方法的更多信息。

我猜结果是标准结果,但我不知道这是什么类型的数据。我的意思是它不是XML或JSON。

我想将这样的字符串转换为JSON:

{
    RequestToken: "jU0..."
}

是否有标准的转换器/解析器或者我必须构建一个?


此外,另一个请求可能如下所示:

Error=MissingParameters
ErrorDescription=Sorry, try again with all the required parameters.

我希望将其转换为JSON:

{
   Error: "MissingParameters",
   ErrorDescription: "Sorry, try again with all the required parameters."
}

构建这样的解析器非常容易,但我不想重新发明轮子。

1 个答案:

答案 0 :(得分:0)

我决定写自己的功能。如果有一个标准算法来解析这样的字符串,请留下评论。

/*
 *  Transform a string like this:
 *
 *  "Field1=123
 *  Field2=1234
 *  Field3=5"
 *
 *  into an object like this:
 *
 *  {
 *      "Field1": "123",
 *      "Field2": "1234",
 *      "Field3": "5",
 *  }
 *
 * */
function parseResponse (str) {

    // validate the provided value
    if (typeof str !== "string") {
        throw new Error("Please provide a string as argument: " + 
                                                 JSON.stringify(str));
    }

    // split it into lines
    var lines = str.trim().split("\n");

    // create the object that will be returned
    var parsedObject = {};

    // for every line
    for (var i = 0; i < lines.length; ++i) {
        // split the line
        var splits = lines[i].split("=")
            // and get the field
            , field = splits[0]
            // and the value
            , value = splits[1];

        // finally set them in the parsed object
        parsedObject[field] = value;
    }

    // return the parsed object
    return parsedObject;
};