如何在Android中创建JSON?

3
我想要创建一个类似这样的JSON字符串:
[{"addon_id":2,"addon_rate":1550},{"addon_id":3, "addon_rate":300}]

这是可能的吗?怎么做呢?

我的代码现在如下:

String formattedString = BookingDetailsCartAdapter.addones_id.toString().replace("[", "").replace("]", "").trim();
String  formattedString1 = BookingDetailsCartAdapter.addones_rate.toString().replace("[", "").replace("]", "").trim();

myjson="[{\"addon_id\":\""+formattedString+"\",\"addon_rate\":\""+formattedString1+"\"}]";

请适当编辑您的代码,以便它能够被理解。明确陈述您所要求的内容。 - Debanik Dawn
请查看 https://developer.android.com/reference/org/json/package-summary.html。 - user3386180
2个回答

4
你可以使用GSON。
在Gradle文件中添加:
compile 'com.google.code.gson:gson:2.8.1'


public class Addon{
    public int addon_id;
    public int addon_rate;
 }

Addon addon = new Addon ();
addon.addon_id=2;
addon.addon_id=1550;
Gson gson = new Gson();
String json = gson.toJson(addon); //

//--- 对于数组

List<Addon > objList = new ArrayList<Addon >();
objList.add(new Addon (0, 1550));
objList.add(new Addon (1, 1552));
objList.add(new Addon (2, 1553));


String json = new Gson().toJson(objList);
System.out.println(json);

http://www.javacreed.com/simple-gson-example/


糟糕的解决方案。他没有要求将模型映射到JSON,他问的是如何创建像上面那样的JSON。使用第三方库创建模型来生成JSON不是他要求的。 - Emanuel
1
@EmanuelSeibold 我不同意。这个解决方案很好。它展示了一种非常友好的生成Json的方式,而这正是OP所不知道的。 - IAmGroot
1
这对于初学者来说会引发更多问题。"Gson是什么?""我该如何安装GSON,除了gradle导入行带有固定版本之外?""..."事实上,即使我喜欢gson,但它可以在没有第三方库的情况下完成,这会误导初学者。 - Emanuel
介绍gson给OP是好的,但不是解决OP问题的最佳方式,因此我同意@EmanuelSeibold的观点。使用一个庞大的库而不是使用本地库有点过度杀伤力。让OP逐渐建立自己的代码能力。 - ישו אוהב אותך
1
在支持GSON方面,似乎也有一些很好的理由(请参见https://dev59.com/g1gQ5IYBdhLWcg3whERn)。我们没有足够的信息来确定在这种情况下什么是最好的。我觉得这已经变得有点主观了。到目前为止,两个答案都是合法的解决方案。 - user3386180
这只是大多数人的观点,但是如果你与API交互的内容发生变化(它会发生),特别是如果你使用该类来保存程序中的数据,那么使用JSONObject在解析和创建json方面更加灵活,这可能需要你重构所有内容或更改为中间类。自动映射它们可能会给你带来麻烦,即使有些人(不是全部)会建议你使用它,因为“这是谷歌的方式”(可能会改变)。如果你只需要从一些数据创建一个json,那么JSONObject是一个非常友好/精确的方法。 - Lassi Kinnunen

4

你的 JSON 表示它是一个数组,包含两个对象,键分别为 addon_id 和 addon_rate。这两个键都接受数字/整数作为值。首先,你需要创建一个 JSONArray 来存储多个 JSONObject。然后创建 JSONObject,设置你的键和值。之后,将这些对象添加到你的数组中。当你打印或使用 toString() 方法时,你的 jsonArray 包含上面的字符串。

JSONArray jsonArray = new JSONArray();  

JSONObject jsonObjOne = new JSONObject();
jsonObjOne.put("addon_id", 2);
jsonObjOne.put("addon_rate", 1550);

JSONObject jsonObjTwo = new JSONObject();
jsonObjTwo.put("addon_id", 3);
jsonObjTwo.put("addon_rate", 300);

jsonArray.put(jsonObjOne);
jsonArray.put(jsonObjTwo);

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