m0_60031335 2022-04-22 15:55 采纳率: 28.6%
浏览 50
已结题

JAVA 将上面包体转换成下面

JAVA 将上面包体转换成下面


这个是JSONArray
                        [[
                                {
                                        "Type": 4,
                                        "Name": "ExecID"
                                },
                                {
                                        "Type": 4,
                                        "Name": "TaskID"
                                }
                                
                        ],[
                                {
                                        "Value": "123"
                                },
                                {
                                        "Value": "456"
                                }
                                
                        ],[
                                {
                                        "Value": "789"
                                },
                                {
                                        "Value": "abc"
                                }
                                
                        ]
                        
                        ..............
                        ]
                        变这样这样
                        [
                                {
                                        "ExecID": "123",
                                        "TaskID": "456",
                                },{
                                        "ExecID": "789",
                                        "TaskID": "abc",
                                }
                                .............
                        ]
  • 写回答

3条回答 默认 最新

  • qq_25376897 2022-04-22 16:44
    关注
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    
    public class Test {
        public static void main(String[] args) {
            //jsonArray:要处理的
            String str = "[[{\"Type\": 4,\"Name\": \"ExecID\"},{\"Type\": 4,\"Name\": \"TaskID\"}],[{\"Value\": \"123\"},{\"Value\": \"456\"}],[{\"Value\": \"789\"},{\"Value\": \"abc\"}]]";
            JSONArray jsonArray = JSONArray.parseArray(str);
    
            //保存转换后的结果
            JSONArray resArray = new JSONArray();
    
            //把ExecID那些取出来,作为firstArray
            JSONArray firstArray = JSONArray.parseArray(jsonArray.get(0).toString());
            
            //剩下的从下标1开始,逐个取值、赋值
            for (int i = 1; i < jsonArray.size(); i++) {
                //用来存{"TaskID":"456","ExecID":"123"}这种结构
                JSONObject resObj = new JSONObject();
                JSONArray array = JSONArray.parseArray(jsonArray.get(i).toString());
                for (int j = 0; j < array.size(); j++) {
                    //获取Name
                    JSONObject firstObj = JSONArray.parseObject(firstArray.get(j).toString());
                    String Name = firstObj.getString("Name");
    
                    //获取Value
                    JSONObject restObj = JSONArray.parseObject(array.get(j).toString());
                    String Value = restObj.getString("Value");
                    //存到resObj
                    resObj.put(Name, Value);
                }
                //存到resArray
                resArray.add(resObj);
            }
    
            System.out.println(resArray.toString());
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月22日
  • 修改了问题 4月22日
  • 创建了问题 4月22日

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办