从JSon文件中提取一个特定数据,然后将所有数据相加

时间:2017-01-16 23:41:46

标签: java json rest

所以我有点卡住了。我正在使用JSon,我正在尝试从JSON文件中获取所有不同订单的total_price。我可以阅读该文件,但是我遇到了获取该特定信息的问题,然后将其全部加起来。

这是我到目前为止的代码。

$('#grdEstabelecimentosEncontrados').on('click', '.btn-success', function(e){
    //this code will run for all current 
    //and future elements with the class of .btn-success
});

对于JSON文件:

public static void main(String[] args) {




        JSONParser parser = new JSONParser();

        try {

            Object obj = parser.parse(new FileReader(
                    "/orders.json"));

            JSONObject jsonObject = (JSONObject) obj;


            JSONArray orderList = (JSONArray) jsonObject.get("orders");

            System.out.println("\norders");
            Iterator<String> iterator = orderList.iterator();
            while (iterator.hasNext()) {

                System.out.println(iterator.next());
            }
            obj = parser.parse(sCurrentLine);
    JSONArray jsonArray = (JSONArray) obj;
    for(obj : jsonArray){
        JSONObject jsonObject = (JSONObject)obj;
        JSONObject realTitle = (JSONObject)jsonObject.get("0");
        String name = (String) realTitle.get("title");
    }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

我得到的错误是(obj:jsonArray)引起了我的问题,老实说,我认为我甚至没有走上正确的道路。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您的代码有明显的编译时错误。在for循环中,您再次尝试执行get(0),这是不正确的。

我已经改进了代码。

试试这个。它给出了正确的结果如下

  

每笔订单的价格数据 - {4251070723 = 179.04,4251070787 = 14.62}。

     

所有订单的总价格--193.66

   public static void main(String[] args) {
        JSONParser parser = new JSONParser();
        Map<String, String> priceData = new HashMap<>();
        BigDecimal totalPrice = BigDecimal.ZERO;
        String orderId = null;
        String orderPrice = null;

        try {
            String sCurrentLine = null;

            Object obj = parser.parse(new FileReader(
                    "orders.json"));

            JSONObject jsonObject = (JSONObject) obj;
            JSONArray orderList = (JSONArray)(jsonObject.get("orders"));
            System.out.println("Complete order list --"+orderList.toString());

            for(Object singleOrder : orderList) {
                JSONObject singleArrayData = (JSONObject) singleOrder;
                orderId = singleArrayData.get("id").toString();
                orderPrice = singleArrayData.get("total_price").toString();
                priceData.put(orderId, orderPrice);
                totalPrice = totalPrice.add(new BigDecimal(orderPrice));
            }
            System.out.println("The price data of each order --"+priceData.toString());
            System.out.println("The total Price of all order --"+totalPrice);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }