Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用json put作为追加_Java_Json - Fatal编程技术网

Java 如何使用json put作为追加

Java 如何使用json put作为追加,java,json,Java,Json,我必须从数据库中提取一些字段,这些字段表示来自同一地区的某些商店的详细信息。我需要json格式的输出。这是我的密码: JSONObject result = null; String sqlQuery = "SELECT STORE, LOCALITY, LATITUDE, LONGITUDE, ADDRESS, SCHEDULE" + " FROM STORE_LOCATIONS" + " WHE

我必须从数据库中提取一些字段,这些字段表示来自同一地区的某些商店的详细信息。我需要json格式的输出。这是我的密码:

    JSONObject result =  null;
    String sqlQuery = "SELECT STORE, LOCALITY, LATITUDE, LONGITUDE, ADDRESS, SCHEDULE"
                    + " FROM STORE_LOCATIONS"
                    + " WHERE LOCALITY = ?";

    String connectionName = properties.getProperty(JNDI_NAME);
    Connection connection = null;
    PreparedStatement pstmt = null;
    ResultSet resultSet = null;

    try {
        connection = getJNDIConnection(connectionName);
        pstmt = connection.prepareStatement(sqlQuery);
        pstmt.setString(1, locality);
        resultSet = pstmt.executeQuery();
        if (resultSet.next()) {
            result = new JSONObject();
            do {

                JSONObject jsonStore = new JSONObject();

                jsonStore.put("store", resultSet.getString(1));
                jsonStore.put("locality", resultSet.getString(2));
                jsonStore.put("latitude", resultSet.getDouble(3));
                jsonStore.put("longitude", resultSet.getDouble(4));
                jsonStore.put("address", resultSet.getString(5));
                jsonStore.put("schedule", resultSet.getString(6));

                logger.debug("[{}] jsonStore={}", methodName, jsonStore);
                result.append("stores", jsonStore);
            } while(resultSet.next());
        }
    }
运行此代码后,我的结果将显示在一个json数组中,索引为result.append.Like:

{ “商店”:[ { “附表”:“, “商店”:“还有一家商店”, “地址”:“地址”, “地点”:“地点一”, “经度”:“, “纬度”:” }, { “附表”:“, “商店”:“另一家商店”, “地址”:“地址”, “地点”:“地点一”, “经度”:“, “纬度”:” }, { “附表”:“, “商店”:“一家商店”, “地址”:“地址”, “地点”:“地点一”, “经度”:“, “纬度”:” } ] }

我需要的是一个对象,它将是result.put的结果。但是如果我这样写的话,它只会给我一条记录,而不是指定区域的三条记录。 基本上,没有方括号。
您能帮助我吗?

您的代码创建了一个JSON数组,其中包含数据库中每个记录的字段。这就是您收集多行数据并将id映射为存储的JSON数组的方式。如果您想创建一个JSON对象来存储多条记录的数据,这将是一件乏味的事情,因为您必须在JSON对象unique中创建键。为此,您必须添加一个标识符来为每个迭代中的每个字段创建唯一的键,如下所示

{ "stores": { "schedule1": "", "store1": "Yet another store", "address1": "", "locality1": "Locality one", "longitude1":"" , "latitude1": "" }, { "schedule2": "", "store2": "Another store", "address2": "", "locality2": "Locality one", "longitude2":"" , "latitude2": "" }, { "schedule3": "", "store3": "One store", "address3": "", "locality3": "Locality one", "longitude3":"" , "latitude": "" } }

请参阅标识符(应该为每个字段添加)Ex:schedule1-1的添加,以使其成为JSON对象的唯一属性。从JSON对象检索值时,这将变得更加困难。我建议不要切换到这个逻辑

谢谢你的回答,@Octopus。你是说我收到的格式还可以?