Showing posts with label json. Show all posts
Showing posts with label json. Show all posts

Tuesday, April 28, 2015

JSON & XML Online Conversion tool

http://jsonxmlutil.appspot.com/
This tutorial is for converting JSON to XML or XML to JSON. The conversion happens using APIGEE tool, which is used to develop APIs. For the conversion of JSON/XML we use the target endpoint's that are developed on APIGEE tool. We create an API for the conversion which will have two resources inorder to handle JSONtoXML and XMLtoJSON requests.

Step1:Create a resource jsontoxml or any name..


Step2: In develope section , you can arrange all the policies to be applied on the requests. The request gets route on the basis of matching pattern Ex: ../convert/jsontoxml,.../convert/xmltojson (For this you should have good understanding on APIGEE )


Step3: Deploy to environment available


Step4: Go to trace section and Start the Trace Session and hit the url's, you find the live traffic logging.


Finally


How does the conversion happen

APIGEE tool has the ability to do service chaining, sampling data, make XML/JSON conversions, extract variables from request or response e.t.c
APIGEE record the request sent by user into request variable, we now form a list of policies in a sequence to be executed.
Ex: for xml to json conversion, in the response flow


1) Create an assign message policy and assign all the xml request that is sent into an variable response.
2)Send this response xml to an XML to JSON policy using the request as source & assign it to an output variable.
3)Finally assign the json response in an Assign-Message-Policy which can be consumed by any one who ever sends the request.


Source code has been bundled, any one needs this proxy can download it from the url and import in their APIGEE account. Download Here

Wednesday, October 22, 2014

Convert JSON to JavaObject

An easiest approach to parse Json.
org.codehaus.jackson.map.ObjectMapper
#ObjectMapper
This mapper provides functionality for conversting between Java objects and matching JSON. It will use instances of JsonParser and JsonGenerator for implementing actual reading/writing of JSON.

We show the binding to convert JSon to JavaObject

1)student.json



{
   "studentName":"John",
   "age":"15",
   "class":10,
   "schoolDetails":{
      "schoolName":"St Xavier",
      "city":"Bangalore",
      "street":"Nice Road",
      "area":"Electronic city"
      
   },
   "studentResults":[
      {
         "sno":"1",
         "description":"Quarterly Exams",
         "marks":500,
         "grade":"A"
      },
      {
         "sno":"2",
         "description":"Half yearly Exams",
         "marks":478,
         "grade":"B"
      },
   {
         "sno":"3",
         "description":"Annual yearly Exams",
         "marks":507,
         "grade":"A"
      }
   ]
}

2)Create a class to map Json

From the above Json you should be able identify datatypes, custom objects, array/lists of objects.
 a) Create a class StudentData or it can be anything, add studentName,age,class as memeber variables.(here we have student's class. Since class
    is a keyword in java, it cannot be used as a variable, so declare it as clazz)
 b) schoolDetails is an Object in JSON , create a class StudentDetails with its member variables and add schoolDetails as a member in StudentData
    class.
 c) studentResults is an Array/List, create a class StudentResults with its members and add a list property that accepts StudentResults in
    StudentData class.
 d) If every thing is done your class should look like the below class.
 e) Since we defined class as clazz in order to map them correctly use JsonProperty annotation.
     @JsonProperty("class")
     private int clazz;



package json2obj;

import org.codehaus.jackson.annotate.JsonProperty;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: RAVI
 * Date: 23/10/14
 * Time: 9:16 AM
 * To change this template use File | Settings | File Templates.
 */
public class StudentData {
    private String studentName;
    private String age;
    @JsonProperty("class")
    private int clazz;
    private SchoolDetails schoolDetails;
    private List<StudentResults> studentResults;

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public int getClazz() {
        return clazz;
    }

    public void setClazz(int clazz) {
        this.clazz = clazz;
    }

    public SchoolDetails getSchoolDetails() {
        return schoolDetails;
    }

    public void setSchoolDetails(SchoolDetails schoolDetails) {
        this.schoolDetails = schoolDetails;
    }

    public List<StudentResults> getStudentResults() {
        return studentResults;
    }

    public void setStudentResults(List<StudentResults> studentResults) {
        this.studentResults = studentResults;
    }



    public String toString(){
        String sData = "";
        sData+= "Student Details\n===============\nStudent Name:"+studentName+" Age:"+age+" class:"+clazz+"\n";

        sData+= "School Details\n================\nSchool Name:"+schoolDetails.getSchoolName()+" City:"+schoolDetails.getCity()+" Street:"+schoolDetails.getStreet()+" Area:"+schoolDetails.getArea()+"\n";
        sData+="Student Results\n================\n";
        for(StudentResults sr:studentResults){
         sData+= "SNO:"+sr.getSno()+" Description:"+sr.getDescription()+" Marks:"+sr.getMarks()+" Grade:"+sr.getGrade()+"\n";

        }
        return  sData;
    }
}

class SchoolDetails{
    private String schoolName;
    private String city;
    private String street;
    private String area;

    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }
}

class StudentResults{
    private String sno;
    private String description;
    private int marks;
    private String grade;

    public String getSno() {
        return sno;
    }

    public void setSno(String sno) {
        this.sno = sno;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getMarks() {
        return marks;
    }

    public void setMarks(int marks) {
        this.marks = marks;
    }

    public String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }
}

3)Convert JSON to Java Object

Add the following dependency
<dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
</dependency>
The following class will convert Json to Object

package json2obj;

import org.codehaus.jackson.map.ObjectMapper;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/**
 * Created with IntelliJ IDEA.
 * User: RAVI
 * Date: 23/10/14
 * Time: 9:05 AM
 * To change this template use File | Settings | File Templates.
 */
public class ConvertJsonToObj {
    public static void main(String... args) throws IOException {
        FileReader fr = new FileReader("src/main/resources/student.json");
        BufferedReader bufferedReader = new BufferedReader(fr);

        String jsonString  = "";
         String curLine ="";
        while((curLine = bufferedReader.readLine())!=null){
              jsonString+=curLine.trim();
        }

        System.out.println(jsonString);

        ObjectMapper objectMapper = new ObjectMapper();
         StudentData sd = new StudentData();
        sd = objectMapper.readValue(jsonString,StudentData.class);

        System.out.println(sd);


    }
}

Output:

Student Details
===============
Student Name:John Age:15 class:10
School Details
================
School Name:St Xavier City:Bangalore Street:Nice Road Area:Electronic city
Student Results
================
SNO:1 Description:Quarterly Exams Marks:500 Grade:A
SNO:2 Description:Half yearly Exams Marks:478 Grade:B
SNO:3 Description:Annual yearly Exams Marks:507 Grade:A