简体   繁体   English

如何转换地图<String,TreeMap<String,String> &gt; 在java 中将字符串转换为Json 对象?

[英]how to convert Map<String,TreeMap<String,String>> String into Json Object in java?

After retrieving from cache which is stored in below format从以以下格式存储的缓存中检索后

{address={address1=string, address2=string, addressId=2045, city=string, fxGeocode=string, 
houseNumber=string, isActive=true, postalCode=string, state=string, streetName=string, zip=string}, 
externalIds=[{externalId=string, externalIdDocId=38915437-69d7-449a-9bd8-9832c78b2010, 
partyRoleExternalIdType=string}], name=string, organizationRoleId=990}

i have to convert it back into json Object.我必须将它转换回 json 对象。 What will be the best way to do it?最好的方法是什么?

Converted json object is in below format转换后的 json 对象格式如下

{
"address": {
    "address1": "string",
    "address2": "string",
    "addressId": "2045",
    "city": "string",
    "fxGeocode": "string",
    "houseNumber": "string",
    "isActive": "true",
    "postalCode": "string",
    "state": "string",
    "streetName": "string",
    "zip": "string"
},
"externalIds": [
    {
        "externalId": "string",
        "externalIdDocId": "38915437-69d7-449a-9bd8-9832c78b2010",
        "partyRoleExternalIdType": "string"
    }
],
"name": "string",
"organizationRoleId": "990"
}

I'd do it with the Jackson JSON library.我会用 Jackson JSON 库来做。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.10.1</version>
</dependency>

This should give you the output you're looking for:这应该给你你正在寻找的输出:

ObjectMapper mapper = new ObjectMapper();

Map<String, Map<String, String>> myMap = new HashMap<>();

// add stuff to your map of maps

// pretty print
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(myMap);

System.out.println(json);

You can use com.fasterxml.jackson.core library.您可以使用 com.fasterxml.jackson.core 库。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.5</version>
</dependency>

     and use objectMapper to convert this object into JSON.
     //Object to JSON in String

       ObjectMapper mapper = new ObjectMapper();
      String jsonInString = mapper.writeValueAsString(object);

      // beautify JSON
      String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(object);

You can use ObjectMapper class to turn java class object into jason and json to java class object您可以使用ObjectMapper类将 java 类对象转换为 jason,将 json 转换为 java 类对象

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class Test {
    public static void main(String[] args) throws JsonProcessingException {
        Map<String, TreeMap<String,String>> m = new HashMap<>();
        TreeMap<String,String> t = new TreeMap<>();
        t.put("address1", "string");
        t.put("address2", "string");
        m.put("address", t);

        ObjectMapper om = new ObjectMapper();
        String json = om.writeValueAsString(m);
        System.out.println(json);
    }
}

output输出

{"address":{"address1":"string","address2":"string"}} {"address":{"address1":"string","address2":"string"}}

Gson is a good library by Google for json serialization / deserialization. Gson是谷歌提供的一个很好的用于 json 序列化/反序列化的库。 Maven dependency: Maven 依赖:

<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.6</version>
</dependency>

Sample serialization:示例序列化:

Gson gson = new Gson();

Map<String, Map<String, String>> someMap = new HashMap<>();

try (FileWriter writer = new FileWriter("C:\\folder\\file.json")) {
    gson.toJson(someMap, writer);
} catch (IOException e) {
    e.printStackTrace();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM