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

在Ktor(Kotlin)中读取请求文件内容而不保存文件

处理Multipart请求中JSON文件字节数组转Map的方案

你已经获取到了JSON文件的字节数组fileBytes,可以按以下步骤直接读取内容并存入Map:

  • 第一步:将字节数组转为JSON字符串
    字节数组转字符串时要指定编码(JSON通常用UTF-8),避免乱码:

    // Java示例
    String jsonStr = new String(fileBytes, StandardCharsets.UTF_8);
    
    // Kotlin示例
    val jsonStr = String(fileBytes, Charsets.UTF_8)
    
  • 第二步:将JSON字符串解析为Map
    根据你使用的JSON库选择对应方式:

    • 用Jackson(Java/Kotlin通用):
      ObjectMapper objectMapper = new ObjectMapper();
      Map<String, Object> jsonMap = objectMapper.readValue(jsonStr, new TypeReference<Map<String, Object>>() {});
      
      val objectMapper = ObjectMapper()
      val jsonMap: Map<String, Any> = objectMapper.readValue(jsonStr, object : TypeReference<Map<String, Any>>() {})
      
    • 用Gson(Java/Kotlin通用):
      Gson gson = new Gson();
      Map<String, Object> jsonMap = gson.fromJson(jsonStr, new TypeToken<Map<String, Object>>(){}.getType());
      
      val gson = Gson()
      val jsonMap: Map<String, Any> = gson.fromJson(jsonStr, object : TypeToken<Map<String, Any>>() {}.type)
      
    • Kotlin内置Json(无需额外依赖):
      import kotlinx.serialization.json.Json
      import kotlinx.serialization.decodeFromString
      
      // 转成Map<String, JsonElement>,可按需进一步解析值类型
      val jsonMap = Json.decodeFromString<Map<String, JsonElement>>(jsonStr)
      // 或直接转成MutableMap<String, Any>
      val mutableJsonMap = Json.decodeFromString<MutableMap<String, Any>>(jsonStr)
      

如果JSON有明确的结构定义,也可以先解析为对应实体类对象,再按需转换为Map,这样类型安全性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:24:27