在 Kotlin 中解析嵌套地图

Parse nested Map in Kotlin

我在解析时遇到问题 - 我认为是 - Kotlin 映射。一个 SDK 通过制作一个 jsonStruct 然后一个 val latestData = data.jsonStruct.fieldsMap 从它出来。当我打印 latestData.toString() 时,我得到了这个(更改值并使其更易于显示): 编辑:它是一个 google protobuf

{id=string_value: "id1"
  , data=struct_value {
   fields {
     key: "key1"
     value {
       list_value {
         values {
           string_value: "v1"
         }
         values {
           string_value: "v2"
         }
       }
     }
   }
   fields {
     key: "key17"
     value {
       struct_value {
         fields {
           key: "id2"
           value {
             string_value: "value2"
           }
         }
         fields {
           key: "id3"
           value {
             struct_value {
               fields {
                 key: "key2"
                 value {
                   string_value: "info"
                 }
               }
             }
           }
         }
       }
     }
   }
 }
 , someID=string_value: "someID"
}

我怎样才能将“v2”或“info”保存到变量中? “id1”可以用 latestData["id"] 保存,但由于它是嵌套的,所以我无法弄清楚如何为其余部分做这件事。 谢谢

我建议使用 klaxon 库解析 JSON。

如果这不能回答您的问题,您可以尝试使用 gson 将其转换为 Java 对象

像这样工作:

val myValue = latestData["data"]!!.structValue.fieldsMap["key17"]!!.structValue.fieldsMap["id2"]!!.stringValue