Java 读取简单json库文件
今天我开始学习json文件,并使用NetBeans和json库进行了测试:Java 读取简单json库文件,java,netbeans,json-lib,Java,Netbeans,Json Lib,今天我开始学习json文件,并使用NetBeans和json库进行了测试: package tp; import java.io.FileInputStream; import java.io.IOException; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; import org.apache.commons.io.IOUtils; publ
package tp;
import java.io.FileInputStream;
import java.io.IOException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import org.apache.commons.io.IOUtils;
public class Tp {
public static void main(String[] args) throws IOException {
String jsonTxt = IOUtils.toString(new FileInputStream("test/test/test1.json"), "UTF-8");
System.out.println("jsonTxt.length " + jsonTxt.length());
JSONArray root = (JSONArray) JSONSerializer.toJSON(jsonTxt);
JSONObject document = root.getJSONObject(0);
String tag = document.getString("tag");
System.out.println("tag " + tag);
}
}
这是我的json文件:
{
"tag": "value"
}
我打算读取并显示值,但我得到:
jsonTxt.length 25
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(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at tp.Tp.main(Tp.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
第15行是:JSONArray root=JSONArray JSONSerializer.toJSONjsonTxt
我做错了什么
解决方案:
添加所有库:commons-io-2.4.jar、ezmorp-1.0.6.jar、json-lib-2.4-jdk15.jar、commons-logging-1.2.jar、commons-lang-2.6.jar、commons-beanutils-1.9.2.jar、commons-collections-3.2.1.jar
package tp;
import java.io.FileInputStream;
import java.io.IOException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import org.apache.commons.io.IOUtils;
public class Tp {
public static void main(String[] args) throws IOException {
String jsonTxt = IOUtils.toString(new FileInputStream("test/test/test1.json"), "UTF-8");
System.out.println("jsonTxt.length " + jsonTxt.length());
JSONObject root = (JSONObject) JSONSerializer.toJSON(jsonTxt);
String tag = root.getString("tag");
System.out.println("tag " + tag);
}
}
谢谢我想您的类路径中缺少commons-lang.jar。您可能缺少jar文件。但是JSON lib是不太流行的lib之一,它的pre-req数量非常多,因此您可能需要选择一个不同的版本。@SimoneGianni:我选择了错误的版本,现在它正在工作,thanks@HotLicks当前位置我必须在我的项目中使用它,现在我明白你所说的一个不太流行的LIB是什么意思了。