Hi sajith,
i have added this Student class for example.As for current implementation
goes like this way in Jaggery below.
public static String serializeJSON(Object obj) {
if (obj instanceof Wrapper) {
obj = ((Wrapper) obj).unwrap();
}
if (obj == null) {
return "null";
}
if (obj instanceof Undefined) {
return "null";
}
if (obj instanceof Boolean) {
return Boolean.toString((Boolean) obj);
}
if (obj instanceof String) {
return serializeString((String) obj);
}
if (obj instanceof ConsString) {
return serializeString(obj.toString());
}
if (obj instanceof Number) {
return obj.toString();
}
if (obj instanceof XMLObject) {
return serializeString(serializeXML((ScriptableObject) obj));
}
if (obj instanceof NativeObject) {
return serializeNativeObject((NativeObject) obj);
}
if (obj instanceof NativeArray) {
return serializeNativeArray((NativeArray) obj);
}
if (obj instanceof Object[]) {
return serializeObjectArray((Object[]) obj);
}
if (obj instanceof Scriptable) {
Scriptable object = (Scriptable) obj;
String jsClass = object.getClassName();
if ("Date".equals(jsClass)) {
return serializeString(serializeNativeDate(object));
} else if ("Error".equals(jsClass)) {
return serializeString(serializeNativeError(object));
}
}
String JsonString = null;
try{
ObjectMapper mapper = new ObjectMapper();
JsonString = mapper.writeValueAsString(obj);
}catch (Exception e){
System.out.println(e.getMessage());
}
return "{\"javaObject\":\"true\",\"object\":\"" + JsonString + "\"}";
}
AFAIU since we are parsing Object type of argument It is better we can use
ObjectMapper.Correct me If I am wrong.Your suggestion would be more
appreciated.
On Sun, Jan 31, 2016 at 10:23 AM, Sajith Ariyarathna <[email protected]>
wrote:
> Hi Rajeenthini,
>
> AFAIK ability to convert a POJO into JSON object does nor affect the
> output of a Jaggery Log of that POJO.
> To get a proper log output for a Java object, you need to implement the
> "toString" method in that Java class. For example in your case,
>
> public class Student {
>
> ...
>
> public String toString() {
>
> return "{name: " + this.name + ", age: " + this.age + ", indexNo: " +
> this.indexNo + "}";
>
> }
>
> }
>
> Now you can log a Student object in your Jaggery code as following.
>
> log.info(studentObj.toString());
>
>
> Thanks.
>
>
>
> On Sat, Jan 30, 2016 at 9:28 PM, Rajeenthini Satkunam <
> [email protected]> wrote:
>
>> Hi,
>>
>> I have worked on writing Jaggery test for Jaggery-Product.I can observe
>> when we tried to log the object it always gives us empty JSON
>> ({}).Currently the implementation goes this way when we try to log java
>> object.
>>
>> So I was trying to get rid of this observed behavior of Jaggery.I have
>> gone through a solution.
>>
>> *using Jackson[1] *
>>
>> We can convert java object to JSON[2] and can log it.
>>
>> I have shared the piece of code I have tried out with Jackson below.
>>
>> *Simple POJO Student class*
>>
>> public class Student {
>> private int age;
>> private String name;
>> private String indexNo;
>>
>> public int getAge() {
>> return age;
>> }
>>
>> public void setAge(int age) {
>> this.age = age;
>> }
>>
>> public String getName() {
>> return name;
>> }
>>
>> public void setName(String name) {
>> this.name = name;
>> }
>>
>> public String getIndexNo() {
>> return indexNo;
>> }
>>
>> public void setIndexNo(String indexNo) {
>> this.indexNo = indexNo;
>> }
>> }
>>
>> *Simple class to test Jackson*
>>
>> import com.fasterxml.jackson.databind.ObjectMapper;
>> import util.Student;
>> public class MyTest {
>> public static void main(String args[]){
>> Student st = new Student();
>> st.setIndexNo("DS001");
>> st.setAge(12);
>> st.setName("kareena");
>> try{
>> ObjectMapper mapper = new ObjectMapper();
>> String jsonInString = mapper.writeValueAsString(st);
>>
>> System.out.println("************************************************");
>> System.out.println(jsonInString);
>>
>> System.out.println("************************************************");
>>
>> }catch(Exception e){
>> System.out.print("Exception caught "+ e);
>> }
>>
>> }
>> }
>>
>> Actual output by above code.
>> ************************************************
>> {"age":12,"name":"kareena","indexNo":"DS001"}
>> ************************************************
>>
>> I have added a dependency in the POM.xml
>>
>> <dependency>
>> <groupId>com.fasterxml.jackson.core</groupId>
>> <artifactId>jackson-databind</artifactId>
>> <version>2.6.3</version>
>> </dependency>
>>
>>
>> IMHO we can use the same scenario in case of log JAVA object.Your help
>> and suggestions are more appreciated and guide me if I am wrong or I can
>> have better solution than this.
>>
>> [1] - https://github.com/FasterXML/jackson-databind
>> [2] -
>> http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/
>> --
>>
>> *Thank You.*
>>
>> *Rajeenthini Satkunam*
>>
>> *Associate Software Engineer | WSO2*
>>
>>
>> *E:[email protected] <[email protected]>*
>>
>> *M :+94770832823 <%2B94770832823> *
>>
>>
>> _______________________________________________
>> Dev mailing list
>> [email protected]
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> Sajith Ariyarathna
> Software Engineer; WSO2, Inc.; http://wso2.com/
> mobile: +94 77 6602284, +94 71 3951048
>
--
*Thank You.*
*Rajeenthini Satkunam*
*Associate Software Engineer | WSO2*
*E:[email protected] <[email protected]>*
*M :+94770832823 *
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev