如何使用moshi创建复杂的json而不需要定义类?

在gson中,我可以使用JsonElement来格式化一个复杂的json,像(在kotlin中):

val objIDonotWantToDefine = JsonObject() objIDonotWantToDefine.addProperty("objName", "objIDonotWantToDefine") val playerJsonArray = JsonArray() for ((name, age) in players) { val player = JsonObject() player.addProperty("name", name) player.addProperty("age", age) playerJsonArray.add(player) } objIDonotWantToDefine.add("players", playerJsonArray) val jsonStringIWant = GsonBuilder().create().toJson(objIDonotWantToDefine) 

我知道我可以使用JSONWriter在莫西做到这一点。 但有没有一个简单的方法来做到这一点?

感谢@Eric Cochran,我在这里发布解决方案演示:

说你想创建像这样的JSON:

 { "team": { "bestPlayers": [ { "name": "kobe", "age": "20" }, { "name": "shaq", "age": "30" } ], "name": "lakers", "playerCount": 2 }, "age": 999, "description": "hi, I'm a big nested json object" } 

那么你可以这样编码:

 val myNestedObj : MutableMap = LinkedHashMap() myNestedObj.put("description", "hi, I'm a big nested json object") myNestedObj.put("age", 999) val layer1Obj : MutableMap = LinkedHashMap() layer1Obj.put("playerCount", 2) layer1Obj.put("name", "lakers") val playerJsonArray : MutableList> = ArrayList() for ((name, age) in players) { val player : Map = mapOf("name" to name, "age" to age) playerJsonArray.add(player) } layer1Obj.put("bestPlayers", playerJsonArray) myNestedObj["team"] = layer1Obj val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build() val jsonIWant = moshi.adapter(Map::class.java).toJson(myNestedObj)