Acabei de testar. Funciona, mas o jettison pega a última ocorrência, sempre baseado no identificador.
Uma situação mais incomum ainda seria ter identificadores iguais (situação q vc perguntou) e a cada identificador estar atribuido um valor de tipo diferente.
Por exemplo: primeiro o "bindings" que é um array e segundo o "bindings" que é uma String. Se vc tentar pegar um array, vai dar erro. Pq ele vai tentar pegar o último bindings (que é uma String).
No código que passei, isso aqui funciona:
// dois arrays bindings (primeiro com dados, segundo vazio)
{"bindings": [
{"ircEvent":[
{"ircEvent": "ERROR1"},
{"bindings": "OK1"}
]},
{"ircEvent":[
{"ircEvent": "ERROR2"},
{"bindings": "OK2"}
]},
{"ircEvent":[
{"ircEvent": "ERROR3"},
{"bindings": "OK3"}
]}
],
"bindings": []
}
// dois arrays bindings (primeiro vazio, segundo com dados)
{ "bindings": [],
"bindings": [
{"ircEvent":[
{"ircEvent": "ERROR1"},
{"bindings": "OK1"}
]},
{"ircEvent":[
{"ircEvent": "ERROR2"},
{"bindings": "OK2"}
]},
{"ircEvent":[
{"ircEvent": "ERROR3"},
{"bindings": "OK3"}
]}
]
}
// uma string binding e um array binding
// funciona, pq pega a última ocorrência (que é um array) e não a primeira.
{ "bindings": "bla bla bla",
"bindings": [
{"ircEvent":[
{"ircEvent": "ERROR1"},
{"bindings": "OK1"}
]},
{"ircEvent":[
{"ircEvent": "ERROR2"},
{"bindings": "OK2"}
]},
{"ircEvent":[
{"ircEvent": "ERROR3"},
{"bindings": "OK3"}
]}
]
}
Entretanto, isso aqui dá erro:
// um array binding e uma string binding
// não funciona, pq pega a última ocorrência (que é string) e não a primeira.
{"bindings": [
{"ircEvent":[
{"ircEvent": "ERROR1"},
{"bindings": "OK1"}
]},
{"ircEvent":[
{"ircEvent": "ERROR2"},
{"bindings": "OK2"}
]},
{"ircEvent":[
{"ircEvent": "ERROR3"},
{"bindings": "OK3"}
]}
],
"bindings": "bla bla bla",
}
Mas como eu falei, tem um erro conceitual, pq vc não deveria ter dois atributos com o mesmo nome.
[]´s