2017-01-22 41 views
2

私は以下のようにjsonオブジェクトを作成する必要があります。 applicationFilesがjson配列であり、同じコードを記述していますが、spkConfには入れ子になったjsonオブジェクトが含まれています。Javaで入れ子になったjsonオブジェクトを作成する

JsonObjectBuilder outer = Json.createObjectBuilder(); String returnString = ""; 
    File file = new File(fileName); 
    try (Scanner scanner = new Scanner(file);) { 
     JsonObjectBuilder jsonObject = Json.createObjectBuilder(); 
     while(scanner.hasNextLine()){ 
      String line = scanner.nextLine(); 
      if(line !=null && line.trim().startsWith("spark.")){ 
       String param = line.trim(); 
       String [] params = param.split("="); 
       if(params.length == 2){ 
        jsonObject.add(params[0], params[1]); 
       } 

      } 
     } 
     returnString = jsonObject.build().toString(); 
    }catch(IOException e){ 
     e.printStackTrace(); 
    }outer.add("spkConfig", returnString) 

私は

{"job": { 
"applicationFiles": [ 
    "hdfs:///user/test.properties", 
    "hdfs:///user/test1.json" 
], 
spkConf": { 
    "spk.home":"/usr/hdp/current/spk-client", 
    "spk.master.url":"yarn-cluster" 
}}} 

お知らせspkConfig中括弧の前に二重引用符やスラッシュを必要とする一方で、出力の下

{"job": { 
"applicationFiles": [ 
    "hdfs:///user/test.properties", 
    "hdfs:///user/test1.json" 
], 
spkConf": "{ 
    \"spk.home\":\"/usr/hdp/current/spk-client\", 
    \"spk.master.url\":\"yarn-cluster\" 
}}} 

を与えます。 助けてもらえますか?

+0

値をlineとString [] params @Vikas chandraに出力してみてください – Sreemat

答えて

0

json構造体をString(returnString)として追加しないでください。 試してください:

JsonObjectBuilder outer = Json.createObjectBuilder(); 
JsonObjectBuilder jsonObject = Json.createObjectBuilder(); 
File file = new File(fileName); 
try (Scanner scanner = new Scanner(file);) { 
    while(scanner.hasNextLine()){ 
     String line = scanner.nextLine(); 
     if(line !=null && line.trim().startsWith("spark.")){ 
      String param = line.trim(); 
      String [] params = param.split("="); 
      if(params.length == 2){ 
       jsonObject.add(params[0], params[1]); 
      } 

     } 
    } 
}catch(IOException e){ 
    e.printStackTrace(); 
} 
outer.add("spkConfig", jsonObject.build()); 
関連する問題