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

如何将Rest服务返回的JSONArray转换为指定结构的List?

如何转换你的JSON数组结构

根据你提供的需求,核心是将原数组中每个对象的键名映射为新的键名。下面是几种主流编程语言的实现方案,你可以根据自己的技术栈选择:

JavaScript 实现

在前端或 Node.js 环境中,用数组的 map 方法是最简洁的方式:

// 原始JSON数组
const originalArray = [
  {"REFDATA_KEY":"Rf1","REFDATA_VALUE":"Daily"},
  {"REFDATA_KEY":"Rf2","REFDATA_VALUE":"Weekly"},
  {"REFDATA_KEY":"Rf3","REFDATA_VALUE":"Monthly"}
];

// 转换后的数组(注意:统一用小写value保持命名一致性)
const convertedArray = originalArray.map(item => ({
  value: item.REFDATA_KEY,
  label: item.REFDATA_VALUE
}));

console.log(convertedArray);

map 方法会遍历原数组的每个元素,返回一个包含新对象的数组,自动完成键名的映射转换。

Java 实现

如果是后端Java服务,常用Jackson或Gson这类JSON库处理。以下是Jackson的示例:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JsonConverter {
    public static void main(String[] args) throws Exception {
        String originalJson = "[ {\"REFDATA_KEY\":\"Rf1\",\"REFDATA_VALUE\":\"Daily\"}, {\"REFDATA_KEY\":\"Rf2\",\"REFDATA_VALUE\":\"Weekly\"}, {\"REFDATA_KEY\":\"Rf3\",\"REFDATA_VALUE\":\"Monthly\"} ]";
        
        ObjectMapper mapper = new ObjectMapper();
        JsonNode originalNode = mapper.readTree(originalJson);
        
        List<Map<String, String>> convertedList = new ArrayList<>();
        for (JsonNode node : originalNode) {
            Map<String, String> newObj = new HashMap<>();
            newObj.put("value", node.get("REFDATA_KEY").asText());
            newObj.put("label", node.get("REFDATA_VALUE").asText());
            convertedList.add(newObj);
        }
        
        // 也可以用Java 8+ Stream简化写法:
        // List<Map<String, String>> convertedList = StreamSupport.stream(originalNode.spliterator(), false)
        //         .map(node -> {
        //             Map<String, String> obj = new HashMap<>();
        //             obj.put("value", node.get("REFDATA_KEY").asText());
        //             obj.put("label", node.get("REFDATA_VALUE").asText());
        //             return obj;
        //         })
        //         .collect(Collectors.toList());
        
        System.out.println(mapper.writeValueAsString(convertedList));
    }
}

Python 实现

Python 用列表推导式可以快速完成转换,代码非常简洁:

# 原始JSON数组
original_array = [
    {"REFDATA_KEY":"Rf1","REFDATA_VALUE":"Daily"},
    {"REFDATA_KEY":"Rf2","REFDATA_VALUE":"Weekly"},
    {"REFDATA_KEY":"Rf3","REFDATA_VALUE":"Monthly"}
]

# 转换后的数组
converted_array = [{"value": item["REFDATA_KEY"], "label": item["REFDATA_VALUE"]} for item in original_array]

print(converted_array)

核心思路总结

不管用哪种语言,核心逻辑都是:遍历原数组的每个元素,为每个元素创建新对象,将原对象的 REFDATA_KEY 赋值给新对象的 value,REFDATA_VALUE 赋值给新对象的 label。另外你给出的目标示例中第一个对象的 Value 是大写V,建议统一为小写 value 保持命名一致性,上面的示例都采用了小写命名规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:52:13