You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中从给定JSON字符串获取属性名列表

在Kotlin中提取JSON字符串的所有属性名列表

方法一:使用Java标准库的org.json(无需额外依赖)

Android项目默认包含该库,JVM项目可手动引入依赖,实现代码如下:

import org.json.JSONObject

fun main() {
    val jsonString = """
        {
            "id": 2,
            "title": "iPhone X",
            "description": "SIM-Free, Model A19211 6.5-inch Super Retina HD display with OLED technology A12 Bionic chip with ...",
            "price": 899,
            "discountPercentage": 17.94,
            "rating": 4.44,
            "stock": 34,
            "brand": "Apple",
            "category": "smartphones",
            "thumbnail": "https://i.dummyjson.com/data/products/2/thumbnail.jpg",
            "images": [
                "https://i.dummyjson.com/data/products/2/1.jpg",
                "https://i.dummyjson.com/data/products/2/2.jpg",
                "https://i.dummyjson.com/data/products/2/3.jpg",
                "https://i.dummyjson.com/data/products/2/thumbnail.jpg"
            ]
        }
    """.trimIndent()

    val jsonObject = JSONObject(jsonString)
    val propertyNames = jsonObject.keys().asSequence().toList()
    println(propertyNames)
}

方法二:使用Gson库

若项目用Gson处理JSON,可通过JsonObject直接获取属性名:

import com.google.gson.JsonParser

fun main() {
    val jsonString = """
        {
            "id": 2,
            "title": "iPhone X",
            "description": "SIM-Free, Model A19211 6.5-inch Super Retina HD display with OLED technology A12 Bionic chip with ...",
            "price": 899,
            "discountPercentage": 17.94,
            "rating": 4.44,
            "stock": 34,
            "brand": "Apple",
            "category": "smartphones",
            "thumbnail": "https://i.dummyjson.com/data/products/2/thumbnail.jpg",
            "images": [
                "https://i.dummyjson.com/data/products/2/1.jpg",
                "https://i.dummyjson.com/data/products/2/2.jpg",
                "https://i.dummyjson.com/data/products/2/3.jpg",
                "https://i.dummyjson.com/data/products/2/thumbnail.jpg"
            ]
        }
    """.trimIndent()

    val jsonObject = JsonParser.parseString(jsonString).asJsonObject
    val propertyNames = jsonObject.keySet().toList()
    println(propertyNames)
}

方法三:使用Jackson库

对于依赖Jackson的项目,通过JsonNode提取属性名:

import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper

fun main() {
    val jsonString = """
        {
            "id": 2,
            "title": "iPhone X",
            "description": "SIM-Free, Model A19211 6.5-inch Super Retina HD display with OLED technology A12 Bionic chip with ...",
            "price": 899,
            "discountPercentage": 17.94,
            "rating": 4.44,
            "stock": 34,
            "brand": "Apple",
            "category": "smartphones",
            "thumbnail": "https://i.dummyjson.com/data/products/2/thumbnail.jpg",
            "images": [
                "https://i.dummyjson.com/data/products/2/1.jpg",
                "https://i.dummyjson.com/data/products/2/2.jpg",
                "https://i.dummyjson.com/data/products/2/3.jpg",
                "https://i.dummyjson.com/data/products/2/thumbnail.jpg"
            ]
        }
    """.trimIndent()

    val objectMapper = ObjectMapper()
    val jsonNode: JsonNode = objectMapper.readTree(jsonString)
    val propertyNames = jsonNode.fieldNames().asSequence().toList()
    println(propertyNames)
}

以上三种方法最终都会输出期望的结果:

[id, title, description, price, discountPercentage, rating, stock, brand, category, thumbnail, images]

内容的提问来源于stack exchange,提问作者Al Masud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 23:47:43