2011-12-23 51 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

相关问题