2016-11-07 4 views
0

との直列化のための動的なIDと特殊文字私はフラットバッファ

{ 
    "!type": "alarm", 
    "$": { 
    "12279": { 
     "!type": "alarm", 
     "title": "Default", 
     "$": { 
     "5955": { 
      "!type": "alarm", 
      "name": "Wake", 
      "day": "SUN", 
      "startTime": "06:00" 
     }, 
     "29323": { 
      "!type": "alarm", 
      "name": "Away", 
      "day": "SUN", 
      "startTime": "08:00" 
     }, 
     "2238": { 
      "!type": "alarm", 
      "name": "Home", 
      "day": "SUN", 
      "startTime": "18:00" 
     } 
     } 
    } 
    } 
} 

マイFBS以下のようなJSONデータをGoogleを実装しようとしているこの

namespace space.alarm; 
 

 
table Atom{ 
 
    !type:string; 
 
    name:string; 
 
    startDay:string; 
 
    startTime:string; } 
 

 
table AtomShell{ 
 
    key:string (required, key); 
 
    value: Atom; } 
 

 
table Alarm{ 
 
    !type:string; 
 
    title:string; 
 
    $:[AtomShell]; } 
 

 

 
table AlarmShell{ 
 
    key:string (required, key); 
 
    value:Alarm; } 
 

 

 
table Weeklyalarm{ 
 
    !type:string; 
 
    $:[AlarmShell]; } root_type Weeklyalarm;

イムのように見えていフラットバッファーのようなエラーが表示される

  1. alarm.fbs:4:0:エラー:不正な文字:!
  2. alarm.fbs:23:0:エラー:不正な文字:$ !タイプを削除しました。フラットバッファの動作をテストするためにドルを$に変更しました しかし、私は動的IDを変更できません)
  3. Sample.json:25:0:エラー:不明なフィールド:今すぐ12279

私の質問、

  1. ことが可能であればどのよう 者は、フラットバッファに動的なIDを使用することが可能です私は進む?
  2. 可能な場合は、できるだけIDに特殊文字を使用できますか?

ありがとうございます。

答えて

0

フィールド名に!$のような文字を使用することはできません。 !typeなどの代わりにtypeを使用してください。

動的IDの意味が不明です。すべてのフィールド名(キー)はスキーマ内で宣言する必要があるため、動的にすることはできません。 JSONを次のように見せても、同様の結果が得られます。

{ 
    "type": "alarm", 
    "data": [ 
    { 
     id: "12279", 
     "type": "alarm", 
     "title": "Default", 
     "data": [ 
     { 
      "id": "5955", 
      "type": "alarm", 
      "name": "Wake", 
      "day": "SUN", 
      "startTime": "06:00" 
     }, 
     { 
      "id": "29323", 
      "type": "alarm", 
      "name": "Away", 
      "day": "SUN", 
      "startTime": "08:00" 
     }, 
     { 
      "id": "2238", 
      "type": "alarm", 
      "name": "Home", 
      "day": "SUN", 
      "startTime": "18:00" 
     } 
     ] 
    } 
    ] 
} 

対応するスキーマを作成します。

「ダイナミック」リストをベクトルにして、idをオブジェクト自体に移動しました。

その他のヒント:動的ではない文字列値(0​​など)は、代わりに列挙型にするとスペースが少なくなります。

関連する問題