2017-02-20 3 views
1

からヌル_keyを返します。VelocyPack VPackParserは、私は、testという名前のコレクションでは、以下の文書を持ってtoJsonメソッド

[ 
    { 
    "_key": "2469", 
    "_id": "test/2469", 
    "_rev": "_Ujegqfu---", 
    "fieldName": "some value" 
    } 
] 

私は、次の2つの方法でこれを取得しています。これを生成

public Result helloWorldJson() { 

    ArangoDB db = new ArangoDB.Builder().user("<user>").password("<pass>").build(); 
    VPackParser parser = new VPackParser() ; 

    VPackSlice slice = db.db("<db>").collection("test").getDocument("2469", VPackSlice.class);  
    String json = db.db("cms").collection("test").getDocument("2469", String.class); 

    return Results.text().render("{velocy: " + parser.toJson(slice, true) + ", json: " + json); 
} 

出力:

{velocy: {"_key":"2469","_id":null,"_rev":"_Ujegqfu---","fieldName":"some value"}, json: {"_key":"2469","_id":"test\/2469","_rev":"_Ujegqfu---","fieldName":"some value"} 

VPackParserは_idをnullのままにしますか目的や私は何かを逃している?保存された文書で

答えて

2

_idフィールドはJSONでサポートされていると、コレクションIDをinlcudesされていない特殊なvelocypackタイプからで、文書がに保存されている。 を正しく人間が読める「コレクション名でこのフィールドをデシリアライズするには/ document-key "を指定すると、逆シリアル化プロセスは指定されたcollection-idのコレクション名を知る必要があります。これは、プロセスがデータベースまたはjavaドライバの内部コレクションキャッシュを呼び出すことができる場合にのみ可能です。 getDocument(String、Type)または別のAPIメソッドを呼び出すときにのみ、逆シリアル化プロセスはこれにアクセスできます。 VPackParserは、スタンドアロンのVelocypack < - > Jsonパーサーで、フィールド_idを解決できません。解析時にあなたが正しくフィールド_idをdesializeできるのでdabaseとコレクション・キャッシュへのアクセス権を持っている使用されているVPackParserのインスタンス上Stringに方法toJson()typeを設定し、呼び出し、同様に

String json = db.db("cms").collection("test").getDocument("2469", String.class); 

velocypack to json。

あなたはあなたがArangoDBArangoDatabaseまたはArangoCollection上の方法util()から取得したクラスArangoUtilを使用することができます(_idの正しい解析と)API呼び出しは別にVelocypackをデシリアライズします。

VPackSlice slice = db.db("<db>").collection("test").getDocument("2469", VPackSlice.class); 
String json = db.util().deserialize(slice, String.class); 
+0

ありがとうございます。運転手はデシリアライズの方法に関係なく、輸送にvelocyを使用していますか? –

+0

はい。すべてがVelocypackとの間でシリアライズ/デシリアライズされ、バイナリプロトコルVelocystreamで転送されます。 – mpv1989

関連する問題