2015-11-03 41 views
-1

我想从json字符串中提取一个值,该值在String中多次出现。在我的代码中,我只获取了该String.I的最后一次出现我发布了我的JSON字符串和Java代码如何从json字符串中提取值

public class JsonDemo{ 

public static void main(String args[]) 

// let's read 
readJson("book.json"); 
} 
public static void readJson(String file) { 
JSONParser parser = new JSONParser(); 

try { 
    System.out.println("Reading JSON file from Java program"); 
    FileReader fileReader = new FileReader(file); 
    JSONObject json = (JSONObject) parser.parse(fileReader); 


    for(int i=0;i<json.size();i++){ 

     String title = (String) json.get("title"); 
      System.out.println("title: " + title); 
    } 

    /* String title = (String) json.get("title"); 
    String author = (String) json.get("author"); 
    Long price = (Long) json.get("price"); 


    System.out.println("author: " + author); 
    System.out.println("price: " + price); 

    JSONArray characters = (JSONArray) json.get("characters"); 
    Iterator i = characters.iterator(); 

    System.out.println("characters: "); 
    while (i.hasNext()) { 
     System.out.println(" " + i.next()); 
    }*/ 

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

这是我的JSON字符串

[{jobId=501, candidateId=11824, intAvailability=[{"title":"Phone","start":"2015-10-18T00:00:00.000Z","end":"2015-10-18T02:00:00.000Z"},{"title":"Phone","start":"2015-10-19T00:00:00.000Z","end":"2015-10-19T02:00:00.000Z"},{"title":"Phone","start":"2015-10-20T00:00:00.000Z","end":"2015-10-20T02:00:00.000Z"},{"title":"On site","start":"2015-10-25T00:00:00.000Z","end":"2015-10-25T02:00:00.000Z"},{"title":"On site","start":"2015-10-26T00:00:00.000Z","end":"2015-10-26T02:00:00.000Z"},{"title":"On site","start":"2015-10-27T00:00:00.000Z","end":"2015-10-27T02:00:00.000Z"},{"title":"On site","start":"2015-10-28T00:00:00.000Z","end":"2015-10-28T02:00:00.000Z"}], appliedIntOrWorkedWithClient=No, otherOppoWithEmployer=No, inhibitYourAbility=}, {jobId=501, candidateId=12201, intAvailability=[{"title":"Phone","start":"2015-10-31T00:00:00.000Z","end":"2015-10-31T01:30:00.000Z"},{"title":"Phone","start":"2015-11-01T00:00:00.000Z","end":"2015-11-01T01:30:00.000Z"},{"title":"Phone","start":"2015-11-02T00:00:00.000Z","end":"2015-11-02T01:30:00.000Z"},{"title":"On site","start":"2015-11-03T00:00:00.000Z","end":"2015-11-03T01:30:00.000Z"},{"title":"On site","start":"2015-11-04T00:00:00.000Z","end":"2015-11-04T01:30:00.000Z"},{"title":"On site","start":"2015-11-05T00:00:00.000Z","end":"2015-11-05T01:30:00.000Z"},{"title":"On site","start":"2015-11-06T00:00:00.000Z","end":"2015-11-06T01:30:00.000Z"}], appliedIntOrWorkedWithClient=No, otherOppoWithEmployer=No, inhibitYourAbility=}] 

我只得到了“人·波特与混血王子”的价值,但我想这两个“哈利·波特与混血王子“和”曼波特与混血王子“

回答

0

你为什么不试试用gson库。

public class Reader { 

    public static void main(String[] args) { 

     try { 
      JsonReader reader = new JsonReader(new FileReader("path_to _ur_jsonfile.json")); 

      reader.beginObject(); 
      while (reader.hasNext()) { 

       String name = reader.nextName(); 

       if (name.equals("author")) { 

        System.out.println(reader.nextString()); 

       } else if (name.equals("title")) { 

        System.out.println(reader.nextString()); 

       } else if (name.equals("price")) { 

        System.out.println(reader.nextDouble()); 

       } else if (name.equals("characters")) { 
        reader.beginArray(); 
        while (reader.hasNext()) { 
         String chart = reader.nextString(); 
         System.out.println(chart); 
        } 
        reader.endArray(); 
       } else { 
        reader.skipValue(); 
       } 

      } 
      reader.endObject(); 

      reader.close(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

} 

输出:

J. K. Rolling 
Harry Potter and Half Blood Prince 
20.0 
Harry 
Ron 
Hermoinee 
Man Potter and Half Blood Prince 

下载http://www.java2s.com/Code/JarDownload/gson/gson-2.2.2.jar.zip

+0

可以在管理{ “称号”:...},{ “称号”:.... 。} ??看到我编辑的帖子 – Subho

+0

@Madhushan我可以用你的代码获得intAvailability吗?看到我更新的json – Subho

+0

是的。它可以管理...为什么你不试试? –