2011-12-23 60 views
0

我寫此代碼來讀取JSON數據,並且存在當運行該代碼不能解決這個錯誤使用JSON對象

第一,這是我寫代碼(i改變了代碼來糾正JSON錯誤字符串,但問題依然存在)

import net.sf.json.JSONObject; 
import net.sf.json.JSONSerializer; 

public class defaults { 

    public static void main(String[] args) { 
     String jsonTxt = "{lhs: \"100 Euros\",rhs: \"128.551738 Australian dollars\",error: \"\",icc: true}";   
     JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt); 
     String title = json.getString("title");    
     System.out.println("title: " + title); 
    } 
} 

,我發現這個錯誤時運行錯誤消失,如果我刪除談論JSON行代碼

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source)..... 
+0

錯誤消失了,因爲您使用的JSON庫取決於Apache commons lang。如果你不使用庫,你不需要依賴關係,因此你不會得到異常。將類庫添加到類路徑中是您需要學習的基本技能 - 除非您從頭開始編寫所有內容,否則它會一次又一次地出現。我給了你一個關於如何將jar添加到Eclipse中的運行時類路徑的說明的鏈接 - 請學習如何完成這一基本任務。 – Paul 2011-12-24 02:30:23

回答

1
String jsonTxt = "{'lhs': '100 Euros','rhs':'128.551738 Australian dollars','error':'','icc': 'true'}";   
JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt); 
System.out.println("lhs: " + json.getString("lhs")); 
System.out.println("rhs: " + json.getString("rhs")); 
System.out.println("error: " + json.getString("error")); 
System.out.println("icc: " + json.getString("icc")); 

OUTPUT:。

lhs: 100 Euros 
rhs: 128.551738 Australian dollars 
error: 
icc: true 

你可以給JSON字符串用雙引號(「)或單引號(')或鍵不帶引號的所有作品

你需要以下罐子:

1. commons-lang-2.4.jar 
2. ezmorph-1.0.jar 
3. json-lib-0.9.jar 

用於通過eclip添加罐子se:

1.right click on project folder 
2.click on prperties 
3.select "java build path" 
4.select libraries tab 
5.click on "Add External jars" 
6.Browse your jars, select and click ok. 
+0

相同的錯誤! >>你能否給我另一種閱讀json的方式? – 2011-12-23 17:34:23

+0

更新了答案..請檢查第二點,最有可能的是它會刪除異常。 – 2011-12-23 18:04:46

+0

它不適合網頁,它的Windows應用程序將與Java運行。 – 2011-12-23 18:09:39

0

在'true'之後有一個掛起的「,」。

從技術上講,JSON中的字符串和屬性名稱應該使用雙引號,而不是單引號。

+0

這些問題不是他的'NoClassDefFoundError'的原因。 – Paul 2011-12-23 17:14:19

+0

我糾正了json字符串,但仍然是相同的錯誤 – 2011-12-23 17:18:08

+0

s/should/mush。 JSON解析器*可以*接受單引號,但是它很可能會*需要雙引號。 – ThiefMaster 2011-12-24 01:55:02

2

您錯過了類路徑中的Apache Commons lang庫。

如果你曾經被一個NoClassDefFoundError試將類名稱爲jarFinder難倒 - 會告訴你jar放在類可以找到的文件。

+0

對不起,我該如何做到這一點,我在日食 – 2011-12-23 17:18:55

+0

我相信你看運行 - >運行配置,選擇你的應用程序配置,並確保jar文件是在類路徑。 – Paul 2011-12-23 17:21:33

+0

同樣的錯誤>你能給我另一種方式來閱讀json嗎? – 2011-12-23 17:37:16

0

您的運行時類路徑中沒有Apache commons-lang

+0

我糾正了JSON字符串,但仍然是相同的錯誤 – 2011-12-23 17:17:46

相關問題