The Streaming API of JSON-P supports parsing a JSON string. Streaming API is more effective and preferrable method to parse big json documents. Streaming API provides JsonParser class which provides extremely fast, read-only, forward access to json documents.
JsonParser.Event enum provides following constants to identify the events in parsing state.
| 
   Constant  | 
  
   Description  | 
 
| 
   START_ARRAY  | 
  
   Represent the start of a json array  | 
 
| 
   START_OBJECT  | 
  
   Start of a JSON object. The position of the parser is after '{'.  | 
 
| 
   KEY_NAME  | 
  
   Name in a name/value pair of a JSON object. The position of the parser is after the key name. The method getString returns the key name.  | 
 
| 
   VALUE_STRING  | 
  
   String value in a JSON array or object. The position of the parser is after the string value. The method getString returns the string value.  | 
 
| 
   VALUE_NUMBER  | 
  
   Number value in a JSON array or object. The position of the parser is after the number value. JsonParser provides the following methods to access the number value: getInt, getLong, and getBigDecimal.  | 
 
| 
   VALUE_TRUE  | 
  
   true value in a JSON array or object. The position of the parser is after the true value.  | 
 
| 
   VALUE_FALSE  | 
  
   false value in a JSON array or object. The position of the parser is after the false value.  | 
 
| 
   VALUE_NULL  | 
  
   null value in a JSON array or object. The position of the parser is after the null value.  | 
 
| 
   END_OBJECT  | 
  
   End of a JSON object. The position of the parser is after '}'.  | 
 
| 
   END_ARRAY  | 
  
   End of a JSON array. The position of the parser is after ']'.  | 
 
How to create a parser from json string?
'Json.createParser' method is used to create a parser.
Example
JsonParser parser = Json.createParser(new StringReader(jsonString));
Once you got the JsonParser instance, you can use hasNext() and next() methods to parse the json string.
Example
while(parser.hasNext()){
   final Event event = parser.next();
   switch(event){
      ......
   }
}
Find the below working application.
JsonParserDemo.java
package com.sample.app;
import java.io.StringReader;
import java.math.BigDecimal;
import javax.json.Json;
import javax.json.stream.JsonParser;
import javax.json.stream.JsonParser.Event;
public class JsonParserDemo {
        public static void main(String[] args) {
                String jsonString = "{\n" + "  \"id\": 1,\n" + "  \"firstName\": \"Ram\",\n" + "  \"lastName\": \"Gurram\"\n"
                                + "}";
                JsonParser parser = Json.createParser(new StringReader(jsonString));
                String key = null;
                while (parser.hasNext()) {
                        final Event event = parser.next();
                        switch (event) {
                        case KEY_NAME:
                                key = parser.getString();
                                System.out.print(key);
                                break;
                        case VALUE_STRING:
                                String string = parser.getString();
                                System.out.println(" -> " + string);
                                break;
                        case VALUE_NUMBER:
                                BigDecimal number = parser.getBigDecimal();
                                System.out.println(" -> " + number);
                                break;
                        case VALUE_TRUE:
                                System.out.print(true);
                                break;
                        case VALUE_FALSE:
                                System.out.print(false);
                                break;
                        case START_ARRAY:
                                System.out.println("[");
                                break;
                        case END_ARRAY:
                                System.out.println("]");
                                break;
                        case START_OBJECT:
                                break;
                        case VALUE_NULL:
                                System.out.print("null");
                                break;
                        case END_OBJECT:
                                System.out.println();
                                break;
                        default:
                                break;
                        }
                }
                parser.close();
        }
}
Output
id -> 1
firstName -> Ram
lastName -> Gurram
 
 
No comments:
Post a Comment