【问题标题】:Saving Multiple Values in a Key with JSON使用 JSON 在一个键中保存多个值
【发布时间】:2018-03-13 17:52:20
【问题描述】:

我尝试使用多个共享首选项键来执行此操作,但它变得非常复杂。 我看到有人说用 JSON 可以,但不知道怎么做。

我的应用在 ListView 中有很多项,我想在每个项中保存多个值。

您可以想象一个联系人管理应用。 点击Item(person name)时,可以查看电话号码、地址、图片等值。当然,它们可以被编辑、添加和删除。

是否可以使用 JSON 将值保存在单个 KEY 中? 这样我就可以在单击每个项目时加载它的值。

【问题讨论】:

  • 您可以使用可展开的列表视图来显示视图中的属性,是的,在一个键下可以说联系人 1,您可以在其中保存很多东西,例如姓名、电话、地址等,如果您提供某种代码,我们可以帮助您!
  • 我只是不知道应该给你看什么代码。我使用了共享首选项,以便在两个活动之间交换数据。如果您可以向我展示如何使用 JSON 保存和加载值的示例代码,我想我可以将其应用到我的代码中。

标签: android json sharedpreferences key-value-store saving-data


【解决方案1】:

为了能够在jsonObject 中保存多个值,您可以这样做

 try {
        JSONObject Contacts = new JSONObject();
        Contacts.put("Name", "Saul Goodman");
        Contacts.put("Address", "Ocean Drive");
        Contacts.put("Phone", "13456");
        Contacts.put("Contacts", Contacts);
    } catch (JSONException e) {
        e.printStackTrace();
    }

这样会创建一个这样的结构

"Contacts":{
            "Name":"Saul Goodman", 
            "Address":"Ocean Drive", 
            "Phone":"123456" 
        }
};

要检索此值,您应该这样做

JSONArray array = object.getJSONArray("Contacts");

for(int i = 0; i < array.length; i++) {
    JSONObject object = (JSONObject) array.get(i);

    String name = object.get("Name");
    String address = object.get("Address");
    String phone = object.get("Phone");

     //you also can use object.getString(""); to get the strings

}

希望对你有帮助

编码愉快!

【讨论】:

  • 非常感谢!但是,我不知道如何使用它。检索代码应该在 Try/Catch 区域内吗?我的代码在括号外找不到对象。
  • 没有必要将检索代码放在try catch中,但是你可以这样做,现在在第一个try catch中但是在另一个中,这个的用法很简单,首先保存数据当您将它保存在 json 中的项目中时,然后在您的 onitemclicklistener 中粘贴检索代码并使用您需要的数据,我现在在外面,但如果您让它工作,请告诉我,不要忘记检查如果这对你有帮助,我的回答:) 它可能对其他人也有帮助
  • 将您的代码发布在您将数据保存在哪里,编辑问题,当我回到家时,我可以根据您的需求编辑我的答案
猜你喜欢
  • 2018-05-31
  • 2019-05-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 2016-05-27
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多