如何可视化大/深度节约对象/类型的类型层次结构?

时间:2018-01-19 22:56:46

标签: json treeview visualization thrift

对于我们的许多服务,我们有大型的节俭IDL,其中的类型可以非常深入。但是,很难可视化各种类型的关联/嵌套方式。

什么是可视化各种节俭物体的对象图的最简单方法?有没有什么可以将节俭IDL类型转换为JSON漂亮的打印,例如?或IDE扩展,它可以显示类型层次结构的树形图?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用graphviz生成器。

 thrift  -gen gv  <idlfile>

这是我之前用于其他目的的一个例子:

graphviz outpout from IDL below

namespace * Testcase

struct BasicNeeds {
  1 : optional double beerLiters = 1.23
  2 : optional string beerName = "Heineken"
}

enum Steak {
  Raw = 0,
  Rare = 1,
  Medium = 2,
  WellDone = 3,
  Coal = 4
}

enum Requirement {
  SpeakMyLanguage = 0,
  FreeCoffee = 1,
  GoodService = 2,
  TakeCreditCards = 3,
  AllYouCanEat = 4
}

typedef list< Requirement>  FurtherRequirements

struct TableSize {
  1 : optional i32 Width = 20
  2 : optional i32 Length = 40
}

struct PlaceOrder {
  1 : required BasicNeeds BasicNeeds
  2 : required Steak Kind = Steak.Medium
  3 : optional FurtherRequirements FurtherRequirements
  4 : bool FirstVisit = false
  5 : optional TableSize Table  
}

union OrderResult {
  1 : bool Success
  2 : bool SorryOutOfSteaks
  3 : bool SorryClosed
  4 : double UnpaidBillFromLastVisit
}

exception DinerError {
  1 :  string  Msg
}

service Diner {
  OrderResult PlaceOrder( 1 : PlaceOrder request)   throws ( 1: DinerError rex),
  OrderResult PlaceOrder2( 1 : PlaceOrder request, 2: i32 numberOfSteaks)   throws ( 1: DinerError rex),
  PlaceOrder TryReversed( 1 : OrderResult request)
}