如何使用Servlet使用JSONObject在Java中创建正确的JsonArray

Newbiecihuy

如何使用JSONObject在Java中创建如下所示的JSON对象?

    [
  {
    "title": "ZAKI",
    "start": "2010-05-01",
    "placemarks": [
      {
        "polyline": [
          {
            "lat": 48.22467264956519,
            "lon": 16.32568359375
          },
          {
            "lat": 47.517200697839414,
            "lon": 18.984375
          },
          {
            "lat": 45.84410779560204,
            "lon": 15.9521484375
          },
          {
            "lat": 48.22467264956519,
            "lon": 16.32568359375
          }
        ]
      },
      {
        "point": {
          "lat": 48.22467264956519,
          "lon": 16.32568359375
        }
      },
      {
        "point": {
          "lat": 47.517200697839414,
          "lon": 18.984375
        }
      },
      {
        "point": {
          "lat": 45.84410779560204,
          "lon": 15.9521484375
        }
      }
    ]
  }
]

我正在使用servlet。

这是我的servlet代码

JSONArray arrayObj = new JSONArray();
            for (int i = 0; i < listDataTracking.size(); i++) {
                JSONObject obj = new JSONObject();
                EntityTracking dataTracking = listDataTracking.get(i);

                if (dataTracking.getIdTracking() == null) {
                    obj.put("Id", "");
                } else {
                    obj.put("Id", dataTracking.getIdTracking());
                    obj.put("title", dataTracking.getUser_name().getUserName().toUpperCase());
                    obj.put("start", sdf.format(dataTracking.getTglSend()));
//                                       
                    String lat = "";
                    String lon = "";
                    String jamSend = "";
                    Long id = 0l;
//                    

                    String queryStmnt_geoTracking = "SELECT entityGeoTracking.id FROM EntityGeoTracking entityGeoTracking "
                            + "WHERE entityGeoTracking.idTracking.idTracking=\"" + dataTracking.getIdTracking() + "\"";
                    javax.persistence.Query query_geoTracking = em.createQuery(queryStmnt_geoTracking);
                    System.out.println("Isi queryStmnt_geoTracking" + queryStmnt_geoTracking);
                    List<EntityGeoTracking> cekid = query_geoTracking.getResultList();
                    if (cekid.isEmpty()) {
                        System.out.println("Isi cekid == null");
                        return;
                    }
                    System.out.println("Isi cekid" + cekid);
                    EntityGeoTracking dataGeoTraking = em.find(EntityGeoTracking.class, cekid);
                    if (lat.isEmpty()) {

                        lat = dataGeoTraking.getGetLatitude();
                    }
                    if (lon.isEmpty()) {
                        lon = dataGeoTraking.getGetLongitude();
                    }
                    if (id == 0l) {
                        id = dataGeoTraking.getId();
                    }
                    if (jamSend.isEmpty()) {
                        jamSend = dataGeoTraking.getJamSend();
                    }
                    System.out.println("chek value lat, lon, id, jamSend" + lat + "" + lon + "" + id + "" + jamSend);

                   javax.json.JsonArray value = Json.createArrayBuilder()
                            .add(Json.createObjectBuilder()
                            .add("polyline", Json.createObjectBuilder()
                            .add("lat", lat)
                            .add("lon", lon)))
                            .add(Json.createObjectBuilder()
                            .add("point", Json.createObjectBuilder()
                            .add("lat", lat)
                            .add("lon", lon)))
                           .build();


                    obj.put("placemarks", value);

                }



                arrayObj.add(obj);
            }

            em.close();

            JSONObject rows = new JSONObject();

//            rows.put("results", arrayObj);//results
//            rows.put("results", listDataTracking.size());//results
//            rows.put("rows", arrayObj);
//            writer.print(rows.toString());
//            rows.put("", listDataTracking.size());//results
            rows.put("", arrayObj);
            System.out.println(" List : " + arrayObj.toString());
            writer.print(arrayObj);
            writer.close();

//            }
//            br.close();

        } catch (Exception ex) {
            ex.getMessage();
            System.out.println("ERROR: " + ex.getMessage());
        } finally {
            if (em != null && em.isOpen()) {
                em.close();
            }
        }
    }

我的outPut JSON格式

   [
  {
    "Id": 1,
    "title": "ZAKI",
    "start": "2016-06-15",
    "placemarks": [
      {
        "polyline": {
          "lat": {
            "chars": "-6.2206080",
            "string": "-6.2206080",
            "valueType": "STRING"
          },
          "lon": {
            "chars": "106.7810640",
            "string": "106.7810640",
            "valueType": "STRING"
          }
        }
      },
      {
        "point": {
          "lat": {
            "chars": "-6.2206080",
            "string": "-6.2206080",
            "valueType": "STRING"
          },
          "lon": {
            "chars": "106.7810640",
            "string": "106.7810640",
            "valueType": "STRING"
          }
        }
      }
    ]
  }
]

我已经尝试了很多次,但是都没有成功。请帮忙!

汤姆斯
{
    "title": "ZAKI",
    "start": "2010-05-01",
    "placemarks": [
        {
            "polyline": [
                {
                    "lat": 48.2246726495652,
                    "lon": 16.32568359375
                },
                {
                    "lat": 47.5172006978394,
                    "lon": 18.984375
                },
                {
                    "lat": 45.844107795602,
                    "lon": 15.9521484375
                },
                {
                    "lat": 48.2246726495652,
                    "lon": 16.32568359375
                }
            ]
        },
        {
            "point": {
                "lat": 48.2246726495652,
                "lon": 16.32568359375
            }
        },
        {
            "point": {
                "lat": 47.5172006978394,
                "lon": 18.984375
            }
        },
        {
            "point": {
                "lat": 45.844107795602,
                "lon": 15.9521484375
            }
        }
    ]
}

首先,使用一些格式化工具格式化json,以便您可以轻松了解预期输出与实际输出的差异。

对于折线对象,您应该有一个数组,而不是对象中包含的对象。

Json.createObjectBuilder().add("polyline", 
                              Json.createObjectBuilder().add("lat", lat).add("lon", lon))
                              )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用JsonObject在Java中创建正确的Json

如何使用JSONObject使用Java数据库表中的所有值创建JSONArray

如何对 jsonObject 的值求和并在 JAVA 中的 jsonArray 中创建 sum 的新 jsonobject?

如何通过ArduinoJson使用createNestedArray()将JsonArray放入JsonObject中?

如何访问JSONArray中的JSONObject中的JSONObject?Java /安卓

使用JSONObject和JSONArray创建json字符串

JSONArray中的JSONObject不太正确

在JSONObject中使用循环在JAVA中创建嵌套的JSON

无法使用servlet创建正确的表

如何获得JSONArray形式的JSONObject使用OkHttp3

如何使用GSON WHen对象解析JSON是JSONObject还是JSONArray

如何使用内部包含 JSONArray 的 JSONObject 转换为 DataObject

在Liferay Portlet中创建JSONObject和JSONArray

如何使用Json.simple解析Java中的JSONArray?

我无法使用JsonArray在Servlet中获取列表值

从JSONObject创建JSONArray

我想使用JSONObject和JSONArray构建类似于遵循Java中的结构的JSON对象。我该怎么做?

如何使用Java解析从android中的facebook检索到的JSONObject?

如何在JsonArray中更改JsonObject?

在JSONArray中创建一个JSONObject(JSON-Simple / JAVA)

使用Python将JSONObject转换为JSONArray

如何使用Java删除JSONArray元素

如何使用java检查是否正确创建了Oracle程序?

如何为使用Java创建的时钟获取正确的输出?

如何从 json 字符串创建 JSONObject 的 JSONArray?

如何使用Java Servlet在MySql中插入值

如何使用JSON正确读取API并创建列表?在Python中

在JSONObject中添加JSONArray

JSONArray中的JSONObject