我写这段代码来读取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的行,那么错误消失了
答案 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。