Bind child property in itemtemplate

I have itemtemplate as below

    $(go.Panel, "Table",
              { row: 12, column: 1, margin: new go.Margin(0, 0, 0, 2) },
              new go.Binding("itemArray", "comments"),

{
                defaultAlignment: go.Spot.Left,
                itemTemplate:  // the row created for each item in the itemArray
                  $(go.Panel, "TableRow",
                    $(go.TextBlock, new go.Binding("text", "author['key']"),
                      {                        column: 0,
                      }
                    )
                  )
              }


data is like below

[
{
"name" : "test1",
"author" : {
 "key" : 1,
 "desc" : "desc1",
 "data" : "data2"
}
} ,
{
"name" : "test2",
"author" : {
 "key" : 2,
 "desc" : "desc2",
 "data" : "data2"
}
}
]

TextBlock is not binding children property author[‘key’], could you please throw some light?

The second argument to the Binding constructor must be the source property name, not a (quoted) JavaScript expression. Use a conversion function to get a subproperty:

new go.Binding("text", "author", function(a) { return a.key; })