torsdag 11 september 2014

How to parse JSon with Groovy

The Slurper:
       

import groovy.json.JsonSlurper

def jsonSlurper = new JsonSlurper();

/*
Read the JSON from the file system
*/
def jsonSlurper = new JsonSlurper()

def reader = new BufferedReader(new FileReader("c:/tmp/users.json"))
def parsedData = jsonSlurper.parse(reader) 
def usersList = []
parsedData.each {
  entry,value ->
  println value
    def user = new User(id:value.id,
   screenName:value.screenName,
    name:value.name,
    url:value.url,
   followersCount:value.followersCount,
   friendsCount:value.friendsCount,
   favouritesCount:value.favouritesCount,
   statusesCount:value.statusesCount)
    usersList.add(user)
}

usersList.each {aUser -> println aUser.name}
       
 
The Bean:
       


class User{
  def id
  def screenName
  def name
  def url
  def followersCount
  def friendsCount
  def favouritesCount
  def statusesCount
 

  def String toString(){
    return "Name: "+this.name+
    " ScreenName:"+this.screenName+
    " Followers: "+this.followersCount+
    " Friends: "+this.friendsCount+
    " Favourites: "+this.favouritesCount+
    " Statuses: "+this.statusesCount+"
    " URL: "+this.url

  }
}

       
 
The json file:
       

{
    "users": [
        {
            "followersCount": 2000,
            "id": "293939",
            "favouritesCount": null,
            "friendsCount": 2000,
            "url": null,
            "screenName": "ALAN000",
            "name": "Alan",
            "statusesCount": 1900
        },
        {
            "followersCount": 1000,
            "id": "393939",
            "favouritesCount": null,
            "friendsCount": 2030,
            "url": null,
            "screenName": "ALF2000",
            "name": "Alfred",
            "statusesCount": 900
        },
        {
            "followersCount": 3020,
            "id": "493939",
            "favouritesCount": null,
            "friendsCount": 2200,
            "url": null,
            "screenName": "ANNA000",
            "name": "Anna",
            "statusesCount": 910
        }
    ]
}


Generated with this code:
def user1 = new GroovyUser(id:"293939",name:"Alan",screenName:"ALAN000",followersCount:2000,friendsCount:2000,statusesCount:1900)
def user2 = new GroovyUser(id:"393939",name:"Alfred",screenName:"ALF2000",followersCount:1000,friendsCount:2030,statusesCount:900)
def user3 = new GroovyUser(id:"493939",name:"Anna",screenName:"ANNA000",followersCount:3020,friendsCount:2200,statusesCount:910)
def users = [user1, user2,user3]
def jsonBuilder = new groovy.json.JsonBuilder(users:users)

println(jsonBuilder.toPrettyString())
def file = new File("c:/tmp/users.json")
file.write(jsonBuilder.toPrettyString())
       
 

Inga kommentarer:

Skicka en kommentar