LearningPhase
LearningPhase

Reputation: 1287

Add a parent node to Json output in java

I have converted some info to Json format using Jackson in Java. Below is the output I get

[{"lat":45.9,"lon":10.9,"title":"Title A1","html":"<h3>Content A1</h3>","icon":"http://maps.google.com/mapfiles/markerA.png"},{"lat":44.8,"lon":1.7,"title":"Title B1","html":"<h3>Content B1</h3>","icon":"http://maps.google.com/mapfiles/markerB.png","show_infowindow":false},{"lat":51.5,"lon":-1.1,"title":"Title C1","html":"<h3>Content C1</h3><p>Lorem Ipsum..</p>","zoom":8,"icon":"http://maps.google.com/mapfiles/markerC.png"}]

My question is how can I get it in the below format, basically adding the Json to a root node which called locations

{"locations":[{"lat":45.9,"lon":10.9,"title":"Title A1","html":"<h3>Content A1</h3>","icon":"http://maps.google.com/mapfiles/markerA.png"},{"lat":44.8,"lon":1.7,"title":"Title B1","html":"<h3>Content B1</h3>","icon":"http://maps.google.com/mapfiles/markerB.png","show_infowindow":false},{"lat":51.5,"lon":-1.1,"title":"Title C1","html":"<h3>Content C1</h3><p>Lorem Ipsum..</p>","zoom":8,"icon":"http://maps.google.com/mapfiles/markerC.png"}]}

Upvotes: 2

Views: 2544

Answers (2)

Vishal Gajera
Vishal Gajera

Reputation: 4207

you can achieve this by following changes.

Let's Assume, your JSON will be created based upon Bean.java class likewise,

[{"lat":45.9,"lon":10.9,"title":"Title A1","html":"<h3>Content A1</h3>","icon":"http://maps.google.com/mapfiles/markerA.png"},{"lat":44.8,"lon":1.7,"title":"Title B1","html":"<h3>Content B1</h3>","icon":"http://maps.google.com/mapfiles/markerB.png","show_infowindow":false},{"lat":51.5,"lon":-1.1,"title":"Title C1","html":"<h3>Content C1</h3><p>Lorem Ipsum..</p>","zoom":8,"icon":"http://maps.google.com/mapfiles/markerC.png"}]

Now, As per your new requirement, you want something likewise,

{"locations":[{"lat":45.9,"lon":10.9,"title":"Title A1","html":"<h3>Content A1</h3>","icon":"http://maps.google.com/mapfiles/markerA.png"},{"lat":44.8,"lon":1.7,"title":"Title B1","html":"<h3>Content B1</h3>","icon":"http://maps.google.com/mapfiles/markerB.png","show_infowindow":false},{"lat":51.5,"lon":-1.1,"title":"Title C1","html":"<h3>Content C1</h3><p>Lorem Ipsum..</p>","zoom":8,"icon":"http://maps.google.com/mapfiles/markerC.png"}]}

So, in this case you need to create one more class, let's say it's SuperBean.java then it should be likewise,

public class SuperBean {
     private Bean [] locations;

    public Bean[] getBean() {
        return locations;
    }

    public void setBean(Bean[] locations) {
        this.locations = locations;
    }
}

So, your JSON will be created likewise,

{"locations":[......]} // as per your requirement.

Upvotes: 0

OneCricketeer
OneCricketeer

Reputation: 191758

You may wrap the array into a JSONObject like so

ObjectMapper mapper = new ObjectMapper();

Map<String, Object> map = new HashMap<String, Object>();

String json = jsonArray.toString();
map.put("locations", json);

json = mapper.writeValueAsString(map);

Upvotes: 4

Related Questions