【问题标题】:How to remove the double quotes in the JSON?如何删除 JSON 中的双引号?
【发布时间】:2015-12-15 22:38:46
【问题描述】:

我通过以下方式从数据库中获取 JSON

 String DB_PATH = "/data/data/com.example.apps/databases/";
 String myPath = DB_PATH + DBHelper.DATABASE_NAME;// Set path to your database
 String myTable = DBHelper.TABLE_CONTACT;//Set name of your table
 SQLiteDatabase myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

    String searchQuery = "SELECT  * FROM " + myTable;
    Cursor cursor = myDataBase.rawQuery(searchQuery, null );

    JSONArray json = new JSONArray();
    cursor.moveToFirst();
    while (cursor.isAfterLast() == false) {
        int totalColumn = cursor.getColumnCount();
        JSONObject rowObject = new JSONObject();

        for(int i=0 ;  i< totalColumn ; i++) {
            if(cursor.getColumnName(i) != null) {
                try {
                    if(cursor.getString(i) != null) {
                        Log.d("TAG_NAME", cursor.getString(i));
                        rowObject.put(cursor.getColumnName(i), cursor.getString(i));
                    } else {
                        rowObject.put(cursor.getColumnName(i), "");
                    }
                }
                catch(Exception e) {
                    Log.d("TAG_NAME", e.getMessage());
                }
            }
        }
        json.put(rowObject);
        cursor.moveToNext();
    }
    cursor.close();
    Log.d("TAG_NAME_ALL", json.toString());
    return json.toString();

JSON 输出正确,除了一个值 latlng

我得到 - "latlng": "[12.3456789,98.7654321]"

需要得到-"latlng": [12.3456789,98.7654321]

如何摆脱双引号?

【问题讨论】:

  • cursor.getString(i) 是一个字符串,因此被 json 格式化为一个字符串。你可以做的是new JSONArray(cursor.getString(i))
  • 对于 latlng 的 getDouble 有多正确?

标签: android json sqlite


【解决方案1】:

如果您只是想要一种快速而肮脏的方式将该响应转换为双精度值,您可以这样做:

String s = "[12.3456789,98.7654321]";
String trimmed = s.substring(1, s.length()-1);
String[] parts = trimmed.split(",");
double lat = Double.parseDouble(parts[0]);
double lng = Double.parseDouble(parts[1]);
Log.d("latlng", "lat="+lat+"  lng="+lng);

它不漂亮,但它有效。

【讨论】:

  • 我需要输入 JSON 文件 "latlng": [12.3456789,98.7654321] 不带双引号。
  • 或者,你可以简单地意识到[...]是一个json数组,然后使用内置的json解析器来解析它。
  • 它帮助我!非常感谢 String latlng = jsonObj.getString("latlng");字符串修剪 = latlng.substring(1, latlng.length() - 1); String[] 部分 = trimmed.split(","); lat = Double.parseDouble(parts[0]); lng = Double.parseDouble(parts[1]);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 2021-08-27
  • 2021-11-20
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多