2016-08-24 9 views
0

ローカルマシンからjsonファイルを読み込もうとしています。解決方法Object型のtoString()メソッドは引数(InputStream)には適用されません

@Path("/") 
public class JsonParsing { 

    File f = new File("file.json"); 
    if (f.exists()){ 
     InputStream is = new FileInputStream("file.json"); 
     String jsonTxt = IOUtils.toString(is); 
     System.out.println(jsonTxt); 
     JSONObject json = new JSONObject(jsonTxt);  
     String a = json.getString("1000"); 
     System.out.println(a); 
    } 

} 

しかし、toString()メソッドでエラーが発生します。 ローカルコンピュータからjsonオブジェクトを含む.txtファイルを読み取ることも可能ですか?可能であれば、それはどのように行われますか?

+0

ファイルの終了は関係ありません。 'file.json'の代わりに' file.txt'を開くだけです –

+0

'IOUtils'を正しくインポートしましたか? – Thilo

+0

あなたはioutilsのどのバージョンを使用していますか? –

答えて

0
Firstly: whenever you ask the question- add imports as well. 
Secondly: yes it is possible to read a .txt file containing json object. 
Steps: 
1. Add Maven dependency in your pom.xml - 
<dependency> 
    <groupId>com.googlecode.json-simple</groupId> 
    <artifactId>json-simple</artifactId> 
    <version>1.1.1</version> 
</dependency> 

Or add the jar of this dependency. 

2.imports in java file - 

import java.util.Iterator; 
import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.json.simple.parser.JSONParser; 

3. Sample Java code to read .txt file containing 
this json object 
{ 
    "Name": "crunchify.com", 
    "Author": "App Shah", 
    "Company List": [ 
     "Compnay: eBay", 
     "Compnay: Paypal", 
     "Compnay: Google" 
    ] 
} 

@SuppressWarnings("unchecked") 
    public static void main(String[] args) { 
     JSONParser parser = new JSONParser(); 

     try { 

      Object obj = parser.parse(new FileReader(
        "/Users/<username>/Documents/file1.txt")); 

      JSONObject jsonObject = (JSONObject) obj; 

      String name = (String) jsonObject.get("Name"); 
      String author = (String) jsonObject.get("Author"); 
      JSONArray companyList = (JSONArray) jsonObject.get("Company List"); 

      System.out.println("Name: " + name); 
      System.out.println("Author: " + author); 
      System.out.println("\nCompany List:"); 
      Iterator<String> iterator = companyList.iterator(); 
      while (iterator.hasNext()) { 
       System.out.println(iterator.next()); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

Hope it helps. 
0

試してみてください。

File f = new File("file.json"); //it can be the same file "file.txt" 
    InputStream is = null; 
    if (f.exists()){ 
     try { 
      is = new FileInputStream("file.json"); 
     } catch (FileNotFoundException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 

     BufferedReader r = new BufferedReader(new InputStreamReader(is)); 
     StringBuilder stringBuilder = new StringBuilder(); 
     String line; 
     String jsString = null; 
     try { 
      while ((line = r.readLine()) != null) { 
       stringBuilder.append(line); 
      } 
      jsString = stringBuilder.toString(); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
     System.out.println(jsString); 
     JSONObject jsonObj = new JSONObject(jsString); 
     String a = jsonObj.getString("1000"); 
     System.out.println(a); 
    } 

を参照してください: Creating JSONObject from text file

1

あなたがIOUtilsを使用してimport sun.misc.IOUtilsすることができるが、デフォルトでは、パラメータ(入力ストリーム)とtoStringメソッドが含まれていないので、あなたがする必要がありますこの方法を使用するには、apache common io libを使用してください。

import org.apache.commons.io.IOUtils; 
関連する問題