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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看