2013-03-29 241 views
5
JSONObject login = new JSONObject(); 
login.put("Key1", "Value1"); 

我只是想用键和值对创建一个简单的JSON对象。我得到这个例外“Unhandled exception type JSONException”。未处理的异常类型JSONException

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

它们是否都是用键,值对创建对象的等效方法。创建需要发送到服务的对象时,哪种方式是首选方式。

+0

基于可能的方式是创建JSONObject..And创建插入数据JSON对象将抛出你需要抓住这一例外的例外,那就是未处理的异常,这只是一个警告 – Pragnani

+0

@Kevin:认真改变这个问题的主题。因为这完全是误导性的 – karthick

+0

它将取决于你的服务器除外,如果你需要发送一个头文件应用程序/ json那么你必须创建一个json对象(更有用的方法是你有多个参数){“key1”:“value1”} –

回答

14

未处理的异常类型JSONException

你需要用你的代码放到try-catch块。这是你的警告。

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

他们是创造与关键,价值 对物体的两个等价的方式。当创建一个需要 发送到服务的对象时,这是首选方式。

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

两者都作为键值对但它们不同。

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

使用Map作为数据结构是不可能的(直接转换为字符串)或者换句话说,您必须通过Map中的KeySet()以及其值为String的每个键存储键(例如使用StringBuilder)想要达到与JSON几乎相同的效果。

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

+0

这只是问题的一部分。实际的问题是没有处理例外。 – karthick

+0

谢谢Sajmon ...我只是想,当我们创建nexted对象结构是好的与JSONObject去,或者我应该与集合框架,然后在调用服务之前Strigify对象。 – Kevin

+0

@Kevin asnwer已更新。 – Sajmon

1

。去的JSONObject:

  • 当你想创建JSON或如果你传递数据的服务接受的JSONObject

    去托收

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

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

我仍然可以使用GSON Library或JSON将我的Collection对象变成Strigified形式吗? – Kevin

+0

是的。因此,为了JSOn的目的,它适合使用JSONObject,因为它提供了额外的功能,比如在有任何重复键时抛出JSONException。 –

相关问题