簡體   English   中英

如何在 JSONArray 上應用平面圖並在 Spark 中轉換為 JSONObject?

[英]How to apply flatmap on JSONArray and convert to JSONObject in Spark?

我正在研究 spark java 模塊,我在其中進行地理編碼 api(100 條記錄的批量請求)。 現在,對於每個請求,我都會在一行中獲得 JSONObject 的 JSONArray,如下所示。

通常會有 100 個地址,但我只給了 2 個地址

  Locations        | Batch_Address
------------------------------------------
Address1,Address2  | [ { name:Address1,lat:12.89,lng:23.56} , { name:Address2,lat:12.3,lng:23.4} ]

我需要的結果如下

Address
----------
{ name:Address1,lat:12.89,lng:23.56}
{ name:Address2,lat:12.3,lng:23.4}

如果您的代碼處理具有java.util.Spliterator<T>的 java8,那么您可以使用它從 jsonarray 創建列表。

字符串類型

JavaRDD<String> JsonObject = json_Batch.javaRDD().flatMap(f -> {
            String res = f.getAs("Batch_Address").toString();


             JSONArray jsonArr = new JSONArray(res);


            List<String> list = StreamSupport.stream(jsonArr.spliterator(), false)
                    .map(val ->   val.toString())

                    .collect(Collectors.toCollection( ArrayList::new ));

            return list.iterator();

        }); 

        JsonObject.foreach(f -> System.out.println(f));



JSON對象類型


  JavaRDD<JSONObject> JsonObject = json_Batch.javaRDD().flatMap(f -> {
            String res = f.getAs("Batch_Address").toString();


             JSONArray jsonArr = new JSONArray(res);


            List<JSONObject> list = StreamSupport.stream(jsonArr.spliterator(), false)
                    .map(val ->  (JSONObject) val)

                    .collect(Collectors.toCollection( ArrayList::new ));

            return list.iterator();

        }); 

        JsonObject.foreach(f -> System.out.println(f));


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM