最近、プロジェクトを開発する際に問題が発生しました。 MyeCilpesでGooglede GSONを使用して、プロジェクトのJSONファイルを正常に読み取り、プロジェクトをTomcatに公開してから同じ方法を使用しました。 「システムは指定されたパスが見つからない」と促します
ファイルをsrc/config/の下に配置します
jsonparser parser = new JSonParser(); jsonobject object =(jsonobject)parser.parse(new fileReader( "config/test.json"));
多くの記事を検索した後、私は問題はサーバーに公開した後、ファイルの相対パスが見つからないので、TomcatのWebAppsの下でプロジェクトテストを見つけるために絶対パスを使用することしかできないことがわかりました。
パスはです
d:/プログラムファイル/tomcat 8.0/webapps/test/web-inf/classes/test.json
読み取りパスを変更した後、JSONファイルに読み取ることができます。以下は、別のJavaクラスで絶対パスを取得する方法です。フォルダーにスペースがあるため、変更されたスペースのスペース部分を交換しました。
string path = jsonutil.class.getClassLoader()。getResource( "/test.json")。getPath()。 jsonobject object =(jsonobject)parser.parse(new fileReader(PATH));
ただし、この方法で読まれたコンテンツは文字化けしています。その理由は、システムエンコード形式がコンパイラのエンコード形式と矛盾しているため、ストリーミングを使用して代わりにファイルを読み取るためです
java.io.fileをインポート; java.io.fileinputStreamをインポート;インポートjava.io.filenotfoundexception; Import java.io.filereader; Import java.io.io.inputStreamReader; Impont java.io.imava.util.util.util.util.util.util.arrylist; com.google.gson.jsonarray; Import com.google.gson.jsonioexception; Import com.google.gson.jsonobject; Import com.google.gson.jsonparser; Import com.google.gson.jsonsyntaxexception; * @return */ public static string getjsonstring(){string path = jsonutil.class.getClassLoader()。getResource( "/ test.json")。getPath()。 file file = new file(path); try {fileReader fileReader = new fileReader(file); reader reader = new inputStreamReader(new FileInputStream(file)、 "utf-8"); int ch = 0; stringbuffer sb = new StringBuffer(); while((ch = reader.read())!= -1){sb.append((char)ch); } filereader.close(); reader.close(); string 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をもっとサポートできることを願っています。