- 
                Notifications
    You must be signed in to change notification settings 
- Fork 2.6k
Tech: How to solve specific problems in your JSON Java code
        Sean Leary edited this page Jan 5, 2023 
        ·
        1 revision
      
    Lots more information is available in the original issue: #544
    // This should work without having to modify the library. This solution uses JSONStrings and assumes that you have control over the classes in your collection.
    public class MyPoJo implements org.json.JSONString {
    private String someField; // pretend getters and setters
    private int someOtherField; // pretend getters and setters
    private ZonedDateTime aDate; // pretend getters and setters
    
    @Override
    public String toJSONString() {
        // notice the lack of "someOtherField"
        return "{" + "\"someField\":" + JSONObject.quote(this.someField) + ",\"aDate\":" + JSONObject.quote(formatMyDate()) + "}";
    }
    private String formatMyDate() { /* some implementation that formats your date a specific way */ }
    }
    // then somewhere else in code:
    Collection<MyPoJo> cMP = getACollectionFromSomewhere();
    JSONArray ja = new JSONArray(cMP); // at this point, the items in the JSONArray are still MyPoJo, not a string or JSONObject
    // if you want you can still work with the POJO through the JSONArray
    // the following will cause the `MyPoJo.toJSONString` to be called for each MyPoJo in the list
    // the output will be as you expect with the POJO formatted as we customized.
    return ja.ToString();