6
JSONObject login = new JSONObject();
login.put("Key1", "Value1");

我只是想用键值对创建一个简单的 JSON 对象。我得到这个例外“ Unhandled exception type JSONException”。

Map<String,String> map = new HashMap<String,String>
map.put("key1", "value1");

它们都是用键值对创建对象的等效方式吗?在创建需要发送到服务的对象时,这是首选方式。

4

2 回答 2

21

未处理的异常类型 JSONException

您需要将代码包装到 try-catch 块中。这是你的警告。

JSONObject login = new JSONObject();
    try {
        login.put("Key1", "Value1");
    } 
    catch (JSONException e) {... }

它们都是用键值对创建对象的等效方式吗?在创建需要发送到服务的对象时,这是首选方式。

JSONObject.put()抛出 JSONException 而Map.put()不是。

两者都作为键值对工作,但它们是不同的。

JSON是通常用于数据交换的特定轻量级格式,如果您创建它,您可以轻松地通过网络传递其字符串表示。

使用Map作为数据结构是不可能的(直接转换为字符串),或者换句话说,KeySet()如果你想实现几乎相同的事情,你必须在 Map 和每个键存储键的值到 String(例如使用 StringBuilder)中进行与JSON.

所以如果你想通过网络在“不同的机器”之间传递数据,JSON直接为它指定。

于 2013-03-29T11:31:15.477 回答
1

去 JSONObject:

  • 当您想要创建 JSON 或对其进行操作时

  • 如果您传递数据的服务接受 JSONObject

    去收藏

  • 如果特定的数据结构适合您

  • 如果您传递数据的服务接受 Collection 对象

于 2013-03-29T11:39:07.443 回答