I suspect using linked hash map should solve your usecase. Ex.

Map mergeAndAddSchema(Map map) {
    LinkedHashMap lhm = new LinkedHashMap();
    lhm.put("schema", "2.0");
    lhm.putAll(map);
    return lhm
}

On Tue, Jul 20, 2021 at 11:33 AM Aravinda Baliga B <[email protected]> wrote:
>
> I am creating a JSON using the `Jackson JsonGenerator` approach and 
> everything seems to work perfectly fine apart from a minor glitch. I would 
> like to move the particular key present in the created JSON to the top of the 
> JSON.
>
> I am creating a key `schema` which appears at the bottom of the JSON. I would 
> like to know if there is a way to move it to the top of the JSON after 
> finished creating the JSON.
>
>
> Following is the JSON that I am creating:
> ```
> public class JacksonTest {
>     public static void main(String[] args) throws IOException {
>         StringWriter jsonObjectWriter = new StringWriter();
>         JsonGenerator jsonGenerator = new 
> JsonFactory().createGenerator(jsonObjectWriter).useDefaultPrettyPrinter();
>         jsonGenerator.writeStartObject();
>         jsonGenerator.writeStringField("a", "Value-A");
>         jsonGenerator.writeStringField("c", "Value-C");
>         jsonGenerator.writeStringField("b", "Value-B");
>         jsonGenerator.writeStringField("schema", "2.0");
>         jsonGenerator.close();
>         jsonGenerator.flush();
>         System.out.println(jsonObjectWriter.toString());
>     }
> }
>
> ```
>
> Following is the output I am getting:
> ```
> {
>   "a" : "Value-A",
>   "c" : "Value-C",
>   "b" : "Value-B",
>   "schema" : "2.0"
> }
> ```
>
> I would like to convert the JSON something like this:
> ```
> {
>   "schema" : "2.0",
>   "a" : "Value-A",
>   "c" : "Value-C",
>   "b" : "Value-B"
> }
> ```
>
> I would like to fetch the `schema` from my created JSON and add it to the top 
> of the JSON.
>
> `Please Note:`
> 1. I am aware the JSON order does not matter but I am doing this for better 
> readability purposes. If there is a way then it would be really useful for 
> the reader to understand the JSON better.
>
> 2. I am aware that I can create the `schema` at first in this code but this 
> is just a sample application that I have provided for ease of understanding. 
> In my real application, I have a `Map` that is populated dynamically 
> throughout the execution and I am adding it at the end of the JSON creation. 
> If I add at the first then I will miss out on a few of the values which are 
> populated after creation so I am adding at the end but I want this to appear 
> at the top of the JSON so trying to move to the top.
>
> 3. I want to know if there is a direct way to do it rather than looping over 
> the JSON, as my created JSON in the real application can be pretty large.
>
> I would really appreciate it if there was a way to do it or is there any 
> workaround for this.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "jackson-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/jackson-user/e248b04c-5a89-4f0d-af7d-117686eafa9bn%40googlegroups.com.



-- 
// Mantas

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jackson-user/CAE9hW8Tc6Sn6%3DNANCOCgbd-UTwoWSwvLbYBDvtbia43N7bK%3DvQ%40mail.gmail.com.

Reply via email to