Swaraj Pal created LANG-1543:
--------------------------------

             Summary: ToStringBuilder.reflectionToString doesnt render nested 
maps correctly.
                 Key: LANG-1543
                 URL: https://issues.apache.org/jira/browse/LANG-1543
             Project: Commons Lang
          Issue Type: Bug
          Components: lang.*
    Affects Versions: 3.10
            Reporter: Swaraj Pal


Nested Maps are not converted correctly as JSON using 
ToStringBuilder.reflectToString commons-lang3:3.10 . Please find below the 
example to reproduce:-

Class:
{code:java}
public class Student {    
    private String name;
    private Map<String, String> education;

    //getters and setters...

    public String toString() {
        return ToStringBuilder.reflectionToString(this, 
ToStringStyle.JSON_STYLE);
    }}
{code}
 

Driver test:
{code:java}
        Student p = new Student();
        p.setName("como");
        
        Map<String, String> educationMap = new HashMap<String, String>();
        educationMap.put("primary", "school");
        educationMap.put("graduation", "B.S.");
        
        p.setEducation(educationMap);
        
        System.out.println(p.toString());
{code}
The toString() prints
{code:java}
{"education":{graduation=B.S., primary=school},"name":"como"}

{code}
but I expect as JSON it should print as below (with proper key,value pairs as 
field names and values)
{code:java}
{"education":{"graduation": "B.S.", "primary":"school"},"name":"como"}

{code}
Suggested fix:

I can create a Pull request for this issue handling Maps appending logic.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to