用json对象无法解决此错误

时间:2011-12-23 17:08:04

标签: java

我写这段代码来读取json数据,运行代码时出错

首先这是我编写的代码(我更改了代码以更正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 );
    }
}

我在运行代码时发现了这个错误

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).....
如果我删除谈论json的行

,那么错误消失了

4 个答案:

答案 0 :(得分:2)

您错过了类路径中的Apache Commons lang库。

如果您被NoClassDefFoundError尝试将类名插入jarFinder而感到难过 - 那将告诉您可以找到类的jar文件。

答案 1 :(得分: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") );

<强>输出:

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

通过eclipse添加罐子:

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.

答案 2 :(得分:0)

你有一个挂着&#34;,&#34;在&#39; true&#39;。

之后

技术上,JSON中的字符串和属性名称应使用双引号,而不是单引号。

答案 3 :(得分:0)

您的运行时类路径中没有Apache commons-lang