เมื่อเร็ว ๆ นี้ฉันพบปัญหาเมื่อพัฒนาโครงการ ฉันใช้ googlede gson บน myecilpes เพื่ออ่านไฟล์ JSON ในโครงการสำเร็จแล้วเผยแพร่โครงการไปยัง Tomcat จากนั้นใช้วิธีเดียวกัน มันจะแจ้งให้ "ระบบไม่สามารถหาเส้นทางที่ระบุ"
วางไฟล์ภายใต้ src/config/
JSONPARSER PARSER = New JSONPARSER (); jsonObject object = (jsonObject) parser.parse (filereader ใหม่ ("config/test.json"));หลังจากค้นหาบทความจำนวนมากฉันพบว่าปัญหาควรเป็นว่าหลังจากเผยแพร่ไปยังเซิร์ฟเวอร์เส้นทางที่สัมพันธ์กันของไฟล์ไม่พบดังนั้นฉันสามารถใช้เส้นทางสัมบูรณ์เพื่อค้นหาการทดสอบโครงการภายใต้ webapps ของ Tomcat
เส้นทางคือ
d:/ไฟล์โปรแกรม/tomcat 8.0/webapps/test/web-inf/classes/test.json
หลังจากแก้ไขเส้นทางการอ่านคุณสามารถอ่านไฟล์ JSON ได้ ต่อไปนี้เป็นวิธีที่จะได้รับเส้นทางสัมบูรณ์ในคลาส Java แยกต่างหาก เนื่องจากมีช่องว่างในโฟลเดอร์ฉันแทนที่ส่วนพื้นที่ของช่องว่างที่เปลี่ยนแปลง
String Path = jsonutil.class.getClassLoader (). getResource ("/test.json"). getPath (). แทนที่ ("%20", ""); jsonParser parser = new JsonParser (); jsonObject object = (jsonObject) parser.parse (filereader ใหม่ (เส้นทาง));อย่างไรก็ตามเนื้อหาที่อ่านด้วยวิธีนี้อ่านไม่ออก เหตุผลอาจเป็นไปได้ว่ารูปแบบการเข้ารหัสระบบไม่สอดคล้องกับรูปแบบการเข้ารหัสของคอมไพเลอร์ดังนั้นฉันจึงใช้สตรีมมิ่งเพื่ออ่านไฟล์แทน
นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.filenotfoundexception; นำเข้า java.io.filereader; นำเข้า java.io.ioException; นำเข้า Java.io.inputStreamreader com.google.gson.jsonarray; นำเข้า com.google.gson.jsonioexception; นำเข้า com.google.gson.jsonObject; นำเข้า com.google.gson.jsonparser; นำเข้า com.google.gson.jsonsyntaxexception; @return */ สตริงคงที่สาธารณะ getJsonstring () {String path = jsonutil.class.getClassLoader (). getResource ("/ test.json"). getPath () แทนที่ ("%20", ""); ไฟล์ไฟล์ = ไฟล์ใหม่ (พา ธ ); ลอง {filereader filereader = new filereader (ไฟล์); reader reader = new InputStreamReader (ใหม่ FileInputStream (ไฟล์), "UTF-8"); int ch = 0; StringBuffer sb = new StringBuffer (); ในขณะที่ ((ch = reader.read ())! = -1) {sb.append ((char) ch); } filereader.close (); reader.close (); สตริง jsonstring = sb.toString (); กลับ jsonstring; } catch (ioexception e) {e.printstacktrace (); คืนค่า null; -จากนั้นแยกวิเคราะห์สตริงรูปแบบ JSON ที่ได้รับ
String jSonstring = jsonutil.getJSonstring (); JsonParser parser = new JsonParser (); jsonObject object = (jsonObject) parser.parse (jsonstring);
วิธีนี้คุณจะได้รับ jsonobject ที่ถูกต้อง
บทความข้างต้นแก้ปัญหาของ Javaweb ที่อ่านไฟล์ JSON ท้องถิ่นและรหัสที่อ่านไม่ออก นี่คือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น