1

CouchDBのビュー結果に16進数が含まれているのはなぜですか?どうすればそれらを取り除くことができますか?

7f
{"total_rows":108,"offset":0,"rows":[
{"id":"5c718dbd01bc0cde8152e08ed6003405","key":"2013-03-19T22:43:27.2683661Z","value":0}
5b
,

...

{"id":"5c718dbd01bc0cde8152e08ed6037404","key":"2013-03-19T23:07:35.5972058Z","value":0}
5b
,
{"id":"5c718dbd01bc0cde8152e08ed60376e5","key":"2013-03-19T23:07:35.6062063Z","value":0}
4

]}
1

0

TL; DR

私はCouchDBを初めて使用し、イベントログのデータベースとしての使用を調査しています。日付ごとにイベントログを表示する簡単なマップ関数を作成しました。

function(doc)
{
    if (doc.DateTime)
    {
        emit(doc.DateTime, doc);
    }
}

Fiddlerを使用して、次のリクエストでこのビューをテストすると、次のようになります。

GET http://localhost:5984/stuff/_design/eventlog/_view/datetime

Host: localhost:5984
User-Agent: Fiddler

返された結果には、JSON構造の一部ではない16進数が含まれていました。したがって、返されるJSONは無効です。これらの16進数が結果に含まれるのはなぜですか。また、どうすればそれらを取り除くことができますか?

Windows(x86)CouchDBバージョン1.2.1を使用しています。

4

2 に答える 2

2

奇妙な16進数は、いわゆるチャンク転送エンコーディングに使用されます。これは、クライアントが応答全体の準備ができるまで待つ必要がなく、HTTP応答をストリーミング形式で利用できるようにする方法です。16進数は、次のチャンクの長さを示します。

チャンクの使用はリクエストのAccept値とは無関係だと思いますが、よくわかりません。

于 2013-03-20T10:29:24.770 に答える
-1

純粋なJSON結果を取得するにはAccept: application/json、HTTPリクエストにヘッダーを含める必要があります。

ヘッダーを省略すると、AcceptCouchDBは、Webブラウザーで適切に表示するのにより適した方法で結果を返します。結果はJSON形式になりますが、 text/plainコンテンツタイプが含まれます。

ApacheCouchDB1.3マニュアルセクション2.2.1を参照してください。リクエストヘッダー

16進数は、チャンク転送エンコーディングの結果です。

于 2013-03-20T01:34:34.657 に答える