1

Sencha Connect Cookie セッションを使用しています。Node では問題なく動作しますが、クライアント側で Cookie を解析する必要があります。Connect は s:j: を Cookie の前に追加し、最後にドット表記 + 生成されたキーを使用します。これを防ぐ方法や JS でこれを解析する方法はありますか、それとも独自のパーサーを作成する必要がありますか?
Cookie の値は次のようになります。

s: j: {
    "oauth": {
        "token": "xxxxxx",
        "token_secret": "xxxxxx",
        "results": {
            "oauth_callback_confirmed": "true"
        },
        "access_token": "xxxxx-xxxx",
        "access_token_secret": "xxxx"
    },
    "me": {
        "val": "bu-rcizj7u8jm7jzgea",
        "refs": {
            "bu-rcizj7u8jm7jzgea": {
                "id": "bu-rcizj7u8jm7jzgea",
                "creation_time": "2012-07-13T16:01:17.159+0000",
                "twitter_id": "138031018",
                "first_name": "xxx",
                "last_name": "xxx",
                "email": "xxx@xxx.com",
                "permission": {
                    "can_update": false,
                    "can_delete": false,
                    "can_read": false
                },
                "twitter_screen_name": "xxxx"
            }
        }
    }
}.DdFx96zckmMbWY8wLiFhuGwnofluk3x2WSVBv71LOV8
4

1 に答える 1

0

このようなことをしてみませんか?返された構造に対して機能するはずです (indexOf が見つからない場合は -1 を返し、'}.' は一般に有効な JSON ではないため、実際に有効な JSON の場合は最後まで読み取るだけです)。別の方法として、最初の '{'; が見つかった場合にのみ値スタックへのプッシュを開始するダイクストラのアルゴリズムの実装を作成することもできます。これは 1 パスしかないため、わずかに高速になります (一方、indexOf を 2 回呼び出すと、最悪の場合、実装が 3 パスになる可能性があります)。ご興味がありましたら、ワンパス コードをお送りいたします。

var rawCookie = 's: j: { "oauth": { "token": "xxxxxx", "token_secret": "xxxxxx", "results": { "oauth_callback_confirmed": "true" },"access_token": "xxxxx-xxxx", "access_token_secret": "xxxx"}, "me": {"val": "bu-rcizj7u8jm7jzgea","refs": {"bu-rcizj7u8jm7jzgea": { "id": "bu-rcizj7u8jm7jzgea", "creation_time": "2012-07-13T16:01:17.159+0000", "twitter_id": "138031018", "first_name": "xxx", "last_name": "xxx", "email": "xxx@xxx.com", "permission": { "can_update": false, "can_delete": false,"can_read": false }, "twitter_screen_name": "xxxx" } } } }.DdFx96zckmMbWY8wLiFhuGwnofluk3x2WSVBv71LOV8';
var niceJsonCookie = rawCookie.slice(rawCookie.indexOf('{'), rawCookie.indexOf('}.') + 1);
var niceJsonObject = JSON.parse(niceJsonCookie);
于 2012-08-22T18:42:36.507 に答える