【问题标题】:How to use JSON array wrote on Android Studio while creating a JSON file?创建 JSON 文件时如何使用在 Android Studio 上编写的 JSON 数组?
【发布时间】:2019-01-01 10:34:07
【问题描述】:

我正在制作一个应用程序,它从用户(姓名、姓氏等)获取数据并将数据保存在 JSON 文件中。我所做的是在从用户那里获取数据后,将它们插入字符串数组并将字符串数组转换为 JSON 数组。这是代码:

public void toJSON(){

  try {
    JSONArray List = new JSONArray();
    for (int j = 0; j < 10; j++) {
      List.put(ad[j]);
      List.put(soyad[j]);
      List.put(sehir[j]);
      System.out.print(List.toString(1));
    }
  } catch (JSONException e) {
    e.printStackTrace();
  }

}

我必须创建一个 JSON 文件,但我不知道如何在用户输入数据后向其中添加数据。

【问题讨论】:

  • 是啊……不要那样做。使用 firebase 或 parse-server.... 将用户数据保存在他们的设备上并不是一个好主意。安全 101。
  • 但我必须这样做。我在一家公司工作,他们就是这样做的。
  • 您在一家获取用户数据并在本地 Android 设备上创建 json 文件的公司工作?哇。 ....哇。
  • 这是他们工作的一部分。我不必解释他们做什么或为什么我必须这样做。我在这里寻求帮助。好吗?
  • 我不需要知道你的公司是做什么的……我不太在乎。但是,你也是那家公司的一员,所以你应该足够小心地向他们解释为什么这不是一个好主意......但是,无论如何,我给你一个例子,如何在代码中编写 jsonarrays......

标签: javascript android json


【解决方案1】:

这就是您将数据放入 JSONArray 的方式。

    JSONArray array = new JSONArray();
    JSONObject object = new JSONObject();
    try {
        object.put("query", "ran 3 miles");
        object.put("gender", "female");
        object.put("weight_kg", 72.5);
        object.put("height_cm", 167.64);
        object.put("age", 30);
        array.put(object);
    } catch (JSONException e) {
        e.printStackTrace();
    }

这将打印出来

[{"gender":"female","weight_kg":72.5,"height_cm":167.64,"query":"跑了 3 英里","age":30}]

如果您想使用列表...请执行此操作。

    JSONArray array = new JSONArray();
    List<String> list = new ArrayList<>();
    JSONObject object = new JSONObject();
    try {
        object.put("age", 5);
        object.put("name", "bill");
        list.add("string1");
        list.add("string2");
        object.put("strings", list);
        array.put(object);
    } catch (JSONException e) {
        e.printStackTrace();
    }

这将打印以下内容:

[{"strings":["string1","string2"],"name":"bill","age":5}]

利用刚刚学到的知识,让我们更深入。

假设您有一个姓名和电子邮件编辑文本,就像这样。

EditText name = findViewById(R.id.name);
EditText email = findViewById(R.id.email);

你有一个 onclick 监听器,也许是一个“保存”按钮。当您录制它时,您需要从那些编辑文本中获取信息。

... // clicked save
String nameString = name.getText().toString().trim();
String emailString = email.getText().toString().trim();
// Create your json file.

    JSONArray array = new JSONArray();
    JSONObject object = new JSONObject();
    String nameString = "john"; // dont need this, this is from the edit text (example)
    String emailString = "email@email.com"; // dont need this, this is from the edit text (example)
    try {
        object.put("name", nameString);
        object.put("email", emailString);
        array.put(object);
        System.out.println(array);
    } catch (JSONException e) {
        e.printStackTrace();
    }

这将打印出来...

[{"name":"john","email":"email@email.com"}]

将字符串列表转换为 JSONArray:

辅助方法:

public static JSONArray convertToJSON (List<String> list) {
    JSONArray array = new JSONArray();
    array.put(list);
    return array;
}

代码:

List<String> list = new ArrayList<>();

    list.add("string1");
    list.add("string2");
    list.add("string3");
    list.add("string4");
    list.add("string5");
    list.add("string6");
    list.add("string7");
    list.add("string8");

    System.out.println(convertToJSON(list));

结果

[["string1","string2","string3","string4","string5","string6","string7","string8"]]

【讨论】:

  • 非常感谢,但这不是我问题的答案
  • @Pelin :: 如果这没有回答您的问题,那么您的问题没有得到很好的定义。 DroiDev 为您提供了一个关于如何创建 JSON 结构的优秀示例。你还需要什么?如何将数据存储到设备存储中?如何从设备打开 JSON 文件并向其中添加更多数据?更具体地说明此答案中缺少的内容。
  • @Barns :: 你可能是对的,我的问题可能不清楚。 “我在 Android Studio 中编写了上面共享的代码。现在我正在尝试学习如何在我尝试创建的 JSON 文件中使用该 JSON 数组,因为数组中还没有信息(用户应该输入信息) . 你可以把它想象成你要创建一个电子邮件地址,它将与其他电子邮件地址一起存储在 JSON 文件中的一个数组中。"
  • @DroiDev 我想我仍然无法很好地解释我的问题。再次感谢您的关注,但我将使用谷歌搜索。
  • 用户输入他们的电子邮件...他们点击保存。您接收电子邮件,并将其附加到 json 文件中。是的? ......如果是这样......你有什么问题?因为您在上面发布的代码甚至不是您创建 json 数组的方式。它甚至没有接近。
【解决方案2】:

您可能应该研究其他持久性方法,例如 Shared Preferences 或 Sql。话虽这么说,我不清楚你的实际问题是什么,或者你试图解决什么问题。

【讨论】:

  • 我在 Android Studio 中编写了上面分享的代码。现在我正在尝试学习如何在我尝试创建的 JSON 文件中使用该 JSON 数组,因为数组中还没有信息(用户应该输入信息)。你可以把它想象成你要创建一个电子邮件地址,它将与其他电子邮件地址一起存储在 JSON 文件中。
猜你喜欢
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 2018-01-01
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
相关资源
最近更新 更多