如何以编程方式将数据写入JSON文件并保存?

3
我希望能够通过Android Studio编程将以下数据以程序方式添加到我的JSON文件中:
[{
    "title":"Olu4a такси",
    "logo":"Taxi/olu4a.jpg",
    "color":"#FFD916",
    "textcolor":"#000000",
    "number":"7000",
    "bigimage":"Taxi/olu4a_car.jpg",
    "star":"4.0"
},
{
    "title":"Asia Express такси",
    "logo":"Taxi/d.jpg",
    "color":"#E7232D",
    "textcolor":"#ffffff",
    "number":"1616",
    "bigimage":"Taxi/asiaexpress.jpg",
    "star":"3.5"
}]

如何完成此任务?
示例
JSONObject obj = new JSONObject(); 

try { 
     obj.put("id", "3"); 
     obj.put("name", "NAME OF STUDENT"); 
     obj.put("year", "3rd"); 
     obj.put("curriculum", "Arts"); 
     obj.put("birthday", "5/5/1993"); 
} catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
} 

有比其他建议更好的方法来完成这个任务。使用Google Gson(或Jackson或Moshi)库来实现。 - slanecek
2个回答

3
只需使用FileWriter将其保存到ExternalFilesDir中,例如。
public void save(Context context, String jsonString) throws IOException {
  File rootFolder = context.getExternalFilesDir(null);
  File jsonFile = new File(rootFolder, "file.json");
  FileWriter writer = new FileWriter(jsonFile);
  writer.write(jsonString);
  writer.close();
  //or IOUtils.closeQuietly(writer);
}

你不理解我。我想要使用 JSONObject 和 JSONArray 来动态地完成这个操作。但是我不知道怎么做! - ILHOM4IK
如果格式正确,只需将您的字符串作为参数传递给 org.json.JSONArray 的构造函数(因为您的示例中有一个数组)。 - Augusto Ferrarini
@ILHOMA4IK,你可以使用JSONArray类来创建数组,然后将JSONObject添加到JSONArray中吗? 例如:JSONObject object = new JSONObject(); object.put("title", "Olu4a такси"); JSONArray values = new JSONArray(); 然后执行values.put(object); - JFC
@ILHOMA4IK请确保您处理异常。 - JFC
哦!我明白了。那怎么保存呢? - ILHOM4IK
public void read() throws IOException, JSONException{ FileReader reader = new FileReader(new File("path_to_file")); BufferedReader bReader = new BufferedReader(reader); StringBuilder data = new StringBuilder(); String line; while ((line = bReader.readLine()) != null) { data.append(line); } JSONArray jsonArray = new JSONArray(data.toString()); System.out.println(jsonArray.getJSONObject(0).get("title")); } - Augusto Ferrarini

0
通常在将对象序列化为json格式时,您会想要使用JsonWriter
如果您只是想写一个包含特定内容的文件,可以使用FileWriter
File file = new File(Environment.getExternalStorageDirectory(), filename);

FileWriter writer = new FileWriter(file);
writer.append(jsonString);
writer.flush();
writer.close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接