簡體   English   中英

Android - 如何正確編寫 JSONObject 字符串

[英]Android - How to correctly write a JSONObject string

我正在嘗試讀取/寫入 json 文件。 但是在第一次寫入后,json 被轉義,再次讀取它不起作用。 我有以下 json 結構,但具有更多價值:

{
  "events": {
    "XdQKixgtraz17eDHb6OW": {
      "department": "Côte-d'Or",
      "objectName": "Dijon",
      "uid": "PMhzfzWlm6vN2yL1kY2i"
    }
  }
}

這是我如何構建我的 json 字符串:

JSONObject eventsJsonObject = new JSONObject();
JSONObject eventsData = new JSONObject();

for(Event event: eventsList){
    String eventString = gson.toJson(event);
    eventsData.put(event.getUid(), eventString);
}

eventsJsonObject.put("events", eventsData);

writeFile(filename, eventsJsonObject.toString());

我最終得到一個看起來像這樣的字符串,我無法再次讀取它..:

{"events":{"XdQKixgtraz17eDHb6OW":"{\"department\":\"Côte-d'Or\",\"objectName\":\"Dijon\",\"uid\":\"PMhzfzWlm6vN2yL1kY2i\"}"}}

正如您所看到的,在第三個分號之前有一個不應該出現的引號。 如何正確構建我的 json 字符串?

謝謝你的時間。

編輯:錯誤來自我構建我的 json 字符串以寫入文件的地方,所以我重寫了我的問題。

試試這個代碼

public static JSONObject readJSONFile (String path, Context context) {
String jsonStr = null;
try {
    InputStream is = getActivity().getAssets().open(path);
    int size = is.available();
    byte[] buffer = new byte[size];
    is.read(buffer);
    is.close();
    jsonStr = new String(buffer, "UTF-8");
} catch (IOException ex) {
    ex.printStackTrace();
    return null;
}
    JSONObject jsonObj = new JSONObject((jsonStr ));
    return jsonObj;
}

暫無
暫無

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

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