提问人:Tommy 提问时间:11/15/2023 最后编辑:k314159Tommy 更新时间:11/15/2023 访问量:62
如何在 Kotlin 中使用 mapOf() 为 JSON 文件插入新行?
How to insert a new line by using mapOf() for JSON file in Kotlin?
问:
我计划在 Kotlin 中创建以下 JSON 文件:
{"Basket A": {"Row 1":"Apple", "Row 2":"Orange", "Row 3":"Pear", "Row 4":"Grapes"}}
{"Basket B": {"Row 1":"Mango", "Row 2":"Pineapple", "Row 3":"Kiwi", "Row 4":"Cherry"}}
{"Basket C": {"Row 1":"Banana", "Row 2":"Papaya", "Row 3":"Watermelon", "Row 4":"Strawberry"}}
{"Basket D": {"Row 1":"Avocado", "Row 2":"Peach", "Row 3":"Lemon", "Row 4":"Guava"}}
目前我正在使用以下代码:
val rows = mapOf(
"Row 1" to "Apple",
"Row 2":"Orange",
"Row 3":"Pear",
"Row 4":"Grapes"
)
val basketA = mapOf(
"Basket A" to rows
)
然后,我可以使用 Gson() 函数将其转换为 JSON,如下所示:
val gson = Gson()
val geoJsonString = gson.toJson(basketA)
如果 JSON 文件中只有 1 个篮子或 1 行,则一切都很好,但是篮子 B、C 和 D 呢?如何在JSON文件中插入新行?
答:
1赞
Ivan Wooll
11/15/2023
#1
这不是有效的 json
{"Basket A": {"Row 1":"Apple", "Row 2":"Orange", "Row 3":"Pear", "Row 4":"Grapes"}}
{"Basket B": {"Row 1":"Mango", "Row 2":"Pineapple", "Row 3":"Kiwi", "Row 4":"Cherry"}}
{"Basket C": {"Row 1":"Banana", "Row 2":"Papaya", "Row 3":"Watermelon", "Row 4":"Strawberry"}}
{"Basket D": {"Row 1":"Avocado", "Row 2":"Peach", "Row 3":"Lemon", "Row 4":"Guava"}}
如果要将这些对象包含在 json 对象中,则需要像这样位于数组中
{
"baskets": [
{
"Basket A": {
"Row 1": "Apple",
"Row 2": "Orange",
"Row 3": "Pear",
"Row 4": "Grapes"
}
},
{
"Basket B": {
"Row 1": "Mango",
"Row 2": "Pineapple",
"Row 3": "Kiwi",
"Row 4": "Cherry"
}
},
{
"Basket C": {
"Row 1": "Banana",
"Row 2": "Papaya",
"Row 3": "Watermelon",
"Row 4": "Strawberry"
}
},
{
"Basket D": {
"Row 1": "Avocado",
"Row 2": "Peach",
"Row 3": "Lemon",
"Row 4": "Guava"
}
}
]
}
这里需要注意的重要事项是,各个行在一对带有键的方括号内用逗号分隔,所有内容都包裹在一对外大括号内。[]
baskets
{}
调整代码以产生上述结果应该不会太难
2赞
mandy8055
11/15/2023
#2
如其中一个答案中所述,您期望的 json 格式不正确。要使用多个篮子创建所需且正确的 JSON 结构,您可以为每个篮子创建一个,然后将它们组合成一个 .像这样:Map
Map
fun main() {
val basketA =
mapOf(
"Basket A" to
mapOf("Row 1" to "Apple", "Row 2" to "Orange", "Row 3" to "Pear", "Row 4" to "Grapes")
)
// Similarly for other baskets...
val allBaskets = listOf(basketA, basketB, basketC, basketD)
val gson = Gson()
val jsonString = gson.toJson(allBaskets)
val outputFile = File("output.json")
outputFile.writeText(jsonString)
评论