java - 使用 java-json 连接 JSON 元素

标签 java csv json

我有一个程序,可以读取 CSV 文件并返回 JSON String。

但是使用JsonArrayJsonObject只产生文件的最后一行结果。如何将多行数据连接到 JSON 对象中?

输出

[{"name":"Other_Renwables","load":"14.3"},{"name":"Other_Renwables","load":"14.3"},{"name":"Other_Renwables","load":"14.3"},{"name":"Other_Renwables","load":"14.3"},{"name":"Other_Renwables","load":"14.3"},{"name":"Other_Renwables","load":"14.3"}]

代码

JSONObject jObject = new JSONObject();
        JSONArray jArray = new JSONArray();
        int count = 0;

         try{  
             logger.info("\nSending 'GET' request to URL : " + url);
             HttpGet httpGet = new HttpGet(url);
             HttpResponse response = httpClient.execute(httpGet);
             int responseCode = response.getStatusLine().getStatusCode();
             logger.info("Response Code : " + responseCode);
             if (responseCode != 404){
                 try(BufferedReader reader = new BufferedReader(
                        new InputStreamReader(
                                response.getEntity().getContent()))) {
                     if(reader != null){
                         //StringBuilder builder = new StringBuilder();
                         String aux = "";
                         while ((aux = reader.readLine()) != null) {
                             String[] tab = aux.split(",");
                             if (count > 0){
                                 try {
                                    jObject.put("name", tab[0]);
                                    jObject.put("load", tab[1]);
                                    jArray.put(jObject);
                                } catch (JSONException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                             }
                             count++;

                            }

                            retVal = jArray.toString();
                     }
                 }

              }
             return retVal;
         }finally{
             httpClient.getConnectionManager().shutdown();
         }

最佳答案

您正在使用相同的对象并在循环中覆盖它。 这个实例化:

 JSONObject jObject = new JSONObject();

必须在你的循环中。

 try {
     JSONObject jObject = new JSONObject();
     jObject.put("name", tab[0]);
     jObject.put("load", tab[1]);
     jArray.put(jObject);
  } 

关于java - 使用 java-json 连接 JSON 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32657481/

相关文章:

Oracle 的 java 连接池

python - 向 Pandas 数据框添加更多列

java - 使用 JSON 列表的 HTTP 客户端发送和解析响应

csv 文件 - 删除字符串中间的换行符

javascript - 如何在客户端使用 SheetJS 将数据导出到 TSV 文件?

php - 解析 JSON Ajax 响应

java - 从字符串中删除某些大括号

java - 由 : java. io.IOException : File/tmp/lp/LP. 2015.4.28.10.29.40.zip 不是文件或不存在引起

java - 从本地主机上运行的服务器获取 JSON 数据

java - 在每个具体类的一对一表结构中创建外键