У меня есть большая строка, которую я хочу преобразовать в карту в groovy.
Строковые данные - это массив пар ключ-значение, каждый ключ и значение которых заключены в квадратные скобки [] и разделены запятыми. Полная строка данных здесь: https://pastebin.com/raw/4rBWRzMs
Некоторые значения могут быть пустыми, например, '[]' или список значений, содержащий, и: символы, например, [1BLL:220,1BLE:641,2BLL:871,2BLE:475,SW:10029,KL:0,KD:78,ODT:148,AVB:358]
Я хочу разделить эти символы, только если они , а не заключены в квадратные скобки [].
Код, который я пробовал, но прерывается, когда есть список значений. Есть ли способ лучше? Спасибо.
String testData="[[DEVICE_PROVISIONED]: [1], [aaudio.hw_burst_min_usec]: [2000],[debug.hwui.use_buffer_age]: [false], [ro.boot.boottime][1BLL:220,1BLE:641,2BLL:871,2BLE:475,SW:10029,KL:0,KD:78,ODT:148,AVB:358], ro.boot.hardware]: [walleye],[dev.mnt.blk.postinstall]: [],[ro.boot.usbradioflag]: [0], [ro.boot.vbmeta.avb_version]: [1.0], [ro.boot.vbmeta.device]: [/dev/sda18], [ro.boot.vbmeta.device_state]: [unlocked]]"
def map = [:]
testData.replaceAll('\\[]','null').replaceAll("\\s","").replaceAll('\\[','').replaceAll(']','').split(",").each {param ->
def nameAndValue = param.split(":")
map[nameAndValue[0]] = nameAndValue[1]
}