Java 在JSONObject内创建JSONObject以发布数据
我想为正文中的帖子创建以下JSON。我想使用本机类构建这个JSONJava 在JSONObject内创建JSONObject以发布数据,java,android,json,Java,Android,Json,我想为正文中的帖子创建以下JSON。我想使用本机类构建这个JSON [ { "message": { "data": "E-Stop Off" }, "platform": "ros", "topic": "/android_app/nav_control", "type": &qu
[
{
"message": {
"data": "E-Stop Off"
},
"platform": "ros",
"topic": "/android_app/nav_control",
"type": "std_msgs/String",
"expiration_secs": 1
}
]
我更经常地使用这个方法,几乎没有什么变化,这就是为什么我在方法中传递参数的原因。我无法在JSONObject中添加JSONObject。这是我的努力
public String postCommandJSON(JSONObject jsonObject, String topic, String type) {
JSONArray jsonArray = new JSONArray();
try {
JSONObject mainObject = new JSONObject();
mainObject.put("platform", "ros");
mainObject.put("topic", topic);
mainObject.put("type", type);
mainObject.put("expiration_secs", 1);
mainObject.put(jsonObject);
jsonArray.put(mainObject);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonArray.toString();
}
我无法在下一行的JSONObject中添加JSONObject
mainObject.put(jsonObject)
谢谢假设at
mainObject.put(jsonObject)代码>你试图用板条箱装东西
{
"message": {
"data": "E-Stop Off"
}
...
}
然后,除了value(将是JSON对象)之外,您还需要传递到put
方法akey
,稍后我们将通过该方法访问该值
所以你可能想把这行改成
mainObject.put("message", jsonObject);
甚至可能在mainObject.put(“平台”、“ros”)之前执行它代码>如果元素的顺序很重要。“当我在对象中添加对象时,我遇到了一个错误。”我不是Android开发人员,所以我可能是错的,但通常有关问题中错误的信息(如错误消息、堆栈跟踪、预期结果与实际结果之间的比较)在解决问题时非常有用。因此,可能会增加获得正确答案的机会,考虑添加更具体的细节,你所面临的问题。阅读错误信息,搜索它在谷歌上,并看看提示给你的IDE。你应该能够从中找出问题所在。另外,如果你想在这里发布一个问题,询问关于错误/异常的帮助,你还需要包括错误详细信息。现在我能猜到的是,你在只将值的内容传递到JSON对象时遗漏了关键部分的内容(因为JSON对象存储键->值对)。可能put
方法需要key
和value
,但在mainObject.put(jsonObject)处
您只放置值而不指定任何键(根据示例这里应该是“message”
)@arpittatel“但我们也可以在put()方法中添加一个对象”您确定吗?我猜您可能将数组[]
与对象{}
混淆了。通常,当我们将
元素放入数组时,它会被放置在数组的末尾,这样数组会隐式地为该值分配适当的索引,但如果是对象,则应该显式指定键。很高兴我能提供帮助,但您能问一下您的问题并包括您针对该问题收到的错误消息的确切副本吗?否则,面临相同问题的人可能无法找到您的问题和他们问题的潜在答案。当我添加对象时,这是否重要?这取决于您使用的JSON库。有些不保留插入顺序,但有些保留(比如我说我不是Android开发人员,无法测试,但可能猜它可能会保留)。好的,我会按顺序添加它们谢谢@Pshemo的帮助看起来你是编程专家。