在Kotlin中如何用mapOf()生成带换行的多篮子结构JSON文件?
实现方案
1. 构建多篮子的数据结构
先为每个篮子定义对应的行数据,再将单个篮子包装成独立的Map,最后存入列表统一管理:
// 定义各篮子的行数据 val basketARows = mapOf( "Row 1" to "Apple", "Row 2" to "Orange", "Row 3" to "Pear", "Row 4" to "Grapes" ) val basketBRows = mapOf( "Row 1" to "Mango", "Row 2" to "Pineapple", "Row 3" to "Kiwi", "Row 4" to "Cherry" ) val basketCRows = mapOf( "Row 1" to "Banana", "Row 2" to "Papaya", "Row 3" to "Watermelon", "Row 4" to "Strawberry" ) val basketDRows = mapOf( "Row 1" to "Avocado", "Row 2" to "Peach", "Row 3" to "Lemon", "Row 4" to "Guava" ) // 将每个篮子封装为独立Map,存入列表 val allBaskets = listOf( mapOf("Basket A" to basketARows), mapOf("Basket B" to basketBRows), mapOf("Basket C" to basketCRows), mapOf("Basket D" to basketDRows) )
2. 生成带换行的JSON内容
你需要的是JSON Lines格式(每行一个独立JSON对象),而非标准JSON数组。可以遍历列表逐个生成JSON字符串,再用换行符拼接:
// 可选:创建支持格式化缩进的Gson实例,若要紧凑输出则用默认Gson() val gson = GsonBuilder().setPrettyPrinting().create() // 遍历生成每个篮子的JSON,用换行符分隔 val jsonLines = allBaskets.joinToString(separator = "\n") { basket -> gson.toJson(basket) } // 输出或写入文件 println(jsonLines) // 写入文件可调用:File("your-path.json").writeText(jsonLines)
注意事项
- 原代码存在语法错误:
mapOf的键值对应统一使用to,不能混用:,比如"Row 2":"Orange"要改为"Row 2" to "Orange"。 - 若不需要单个篮子内部的格式化缩进,直接用
Gson()替代GsonBuilder().setPrettyPrinting().create()即可生成紧凑的单行JSON对象。
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

