在java中以特定的方式将hashmap序列化为json

b1uwtaje  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(506)

我需要按特定顺序将Map序列化为json。
这是Map
hashmap<string,string>datamap={“companycode”:“4”,“EntyCode”:“2002296”,“subentitycode”:“000”,“contractnumber”:“52504467115”,“progressive contract”:“0”,“documentnumber”:“20000333494028”,“logonusername”:“ar333”,“progressive title”:“0”}
这是我想要的json模型:

{
     "Policy": {
         "ContractNumber": "52504467115",
         "ProgressiveContract": "0"
     },
     "Title": {
         "LogonUserName": "AR333",
         "ProgressiveTitle": "0"
     },
     "BusinessChannel": {
         "CompanyCode": "4",
         "EntyyCode": "2002296",
         "SubEntityCode": "000"
     },
     "Document": {
         "DocumentNumber": "200003333494028"
     }
}

我需要将此Map转换为json字符串。我知道这可以通过使用jackson实现,如下所示:
新建objectmapper().writevalueasstring(Map);
我如何使用jackson实现这一点?或者在java中还有其他方法可以做到这一点吗?
非常感谢。

bksxznpy

bksxznpy1#

首先,您请求的解决方案包含第二个问题:分区。项目不仅必须包含特定的顺序,而且还必须以某种方式划分为不同的类别。在java中,这些类别通常对应于它们自己的类,或者最近的记录。然后,顶级类(对应于json的未命名外部对象)确定顺序(名称) Contract 这是我的选择):

record Contract(
        Policy policy, 
        Title title, 
        BusinessChannel businessChannel, 
        Document document )
{
}

合同的每个属性都有自己的类别,例如:

record Policy( String contractNumber, int progressiveContract )

序列化契约然后递归地序列化它的每个参数,结果是所需的结果。这将是“标准”方式。
既然你从一个 HashMap ,根据合同,它不能保证订购,更不用说将其内容划分为子对象的简单方法了,您可以尝试两种方法:
重新考虑Map的使用。切换到类结构会自动处理该结构。
按顺序手动流式传输和转换值(或使用例如 TreeMap 习惯地 Comparator )然后对值本身进行分区。这可能需要比Map保存更多的工作。

相关问题