我需要按特定顺序将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中还有其他方法可以做到这一点吗?
非常感谢。
1条答案
按热度按时间bksxznpy1#
首先,您请求的解决方案包含第二个问题:分区。项目不仅必须包含特定的顺序,而且还必须以某种方式划分为不同的类别。在java中,这些类别通常对应于它们自己的类,或者最近的记录。然后,顶级类(对应于json的未命名外部对象)确定顺序(名称)
Contract
这是我的选择):合同的每个属性都有自己的类别,例如:
序列化契约然后递归地序列化它的每个参数,结果是所需的结果。这将是“标准”方式。
既然你从一个
HashMap
,根据合同,它不能保证订购,更不用说将其内容划分为子对象的简单方法了,您可以尝试两种方法:重新考虑Map的使用。切换到类结构会自动处理该结构。
按顺序手动流式传输和转换值(或使用例如
TreeMap
习惯地Comparator
)然后对值本身进行分区。这可能需要比Map保存更多的工作。