大佬教程收集整理的这篇文章主要介绍了从 HashMap<String, String> 创建多维 json,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要从 Json
创建一个多维 hashmap
,我必须从 .csv 文件生成它。
来自 csv 的 Hashmap
映射工作正常。
如果我使用简单的 Hashmap
转换创建的 ObjectMapper
,我只会得到一个具有 Json
的所有属性的单一维度 HastMap
。
是否可以检查 keys
的 Hashmap
,如果键以“baseData”开头,它会进入子对象 baseData
,如下面的 Json
所示。
{
"TESTCaseData": {
"baseData": {
"verkaufsproduktart": "special","tarifgeneration": "String","ursprungAngebotsnummer": "String","mandant": "String","sparte": "String","beratungsprotokollID": "String","bonitaet": "String","verkaufsname": "String","aktionsnummer": "String","erstellernummer": "String","verkaufsprozessart": "String","kanalrichtung": "String","versanDWeg": "String","vertrIEbskanal": "TELEFON","quellsystem": "standard","kundenberater": "String","vsnrErgoDirekt": "String","vsnrRisikotraeger": "String","versicherungen": [],"leistungsvereinbarungen": [],"beitraege": [],"abbuchungstagImMonat": "TAG_1","zahlweise": "EINMALZAHLUNG","angebotsstatus": "String","angebotsstatuSAEnderung": "date","haustarif": true,"versicherungsBeginn": "2020-01-01","rabattWert": "PROZenT_2"
},"storeData": {
"personDataStore": [{
"adresse": {
"hausnummer": "String","land": "Deutschland","ort": "String","postleitzahl": "String","strasse": "String"
}]
}
}
像 TESTCaseData
和 baseData
这样的对象名称是固定且已知的。例如,baseData
中的其余数据需要是通用的(这就是我使用 hashmap
的原因)。
感谢帮助
编辑:
当前映射器
public voID getHashmapFromCsv(inputStream csvfilE) throws IOException {
HashMap<String,String> map = new HashMap<String,String>();
BufferedReader br = new BufferedReader(new inputStreamReader(csvfilE));
List<String> completeinputList =
br.lines().collect(Collectors.toList());
String[] baselineArray = completeinputList.get(0).split(";");
for (String singleCase : completeinputList.subList(1,completeinputList.size())) {
String[] singleCaseArray = singleCase.split(";");
for (int i = 0; i < baselineArray.length; i++) {
if (i > singleCaseArray.length-1 ||
singleCaseArraY[i].equals("")) {
map.put(baselineArraY[i],null);
} else {
map.put(baselineArraY[i],singleCaseArraY[i]);
}
}
}
System.out.println(map);
ObjectMapper Obj = new ObjectMapper().enable(serializationFeature.WRAP_ROOT_value);
Obj.setserializationInclusion(JsonInclude.Include.NON_null);
String JsonStr = Obj.writeValueAsString(map);
}
}
{BaseData_kundenberaternummer=12346798,VP3 Kdnr=null,beratungsprotokollID=BERATUNGsveRZICHT,VP3 Nachname=null,VN Postleitzahl=90344,abbuchungstagImMonat=J,telemarkeTingnummer=123456789,VP4 Titel=null,baseData_aktionsnummer=1000,VP4 Hausnummer=null,mandant=1,VP3 Vorname=null,VP1 Vorname=null,VP4 baseData_Kdnr=null,VP3 Titel=null,VP1 Hausnummer=null,zahlweise=QUARTALSWEISE,VN Nachname=MusteRMANn,versanDWeg=EMAIL,VP3 Hausnummer=null,VP4 Ort=null,VP4 Anrede=null,VN Anrede=HERR,tuwID=null,VP2 Nachname=null,haustarif=N,VP2 Hausnummer=null,VP3 Strasse=null,VP2 Kdnr=null,iban=DE99999999,VP1 Nachname=null,VN Vorname=Max,VN baseData_Kdnr=null,VP2 Titel=null,vertrIEbskanal=TELEFON,VP2 Ort=null,VN Geburtsdatum=01.01.1980,VN Titel=null,VP1 Strasse=null,VP2 Strasse=null,VN Hausnummer=60,verkaufsproduktart=standart,quellsystem=system,VP3 Ort=null,rabattWert=0,VP4 Vorname=null,Testfallname=5,VP1 Anrede=null,VP2 Anrede=null,versicherungsBeginn=0,VN Strasse=street,VP2 Vorname=null,tarife=zzz,VP1 Kdnr=null,kundencm=J,verkaufsprozessart=DIREKTABSCHLUSS,VP1 Titel=null,gespraechspartner vorname=Hans,VP1 Postleitzahl=null,VP3 Anrede=null,kontoinhaber=Max MusteRMANn,userID=123456789,VN gleich VP=N,VN Ort=City,VP4 Strasse=null,gespraechspartner nachname=Meyer,versandmail=test@test.com,VP1 Ort=null,VP1 Geburtsdatum=null,VP2 Postleitzahl=null,VP4 Nachname=null,bankname=Bank,VP2 Geburtsdatum=null,VP3 Geburtsdatum=null,VP4 Postleitzahl=null,bic=norSDE51XXX,VP3 Postleitzahl=null,VP4 Geburtsdatum=null}
如果您正确构建了哈希图,objectMapper
将完成这项工作。
如果您正确构建了哈希图,它就不可能为您提供“一维”JSON。
检查您的 hashmap 是否构造正确,就像您给出的 JSON 结果一样。
因此,从您添加的详细信息来看,您似乎只为 baseData 构建了哈希图。这就是您获得“一维”JSON 的原因。
,好的,我找到了一种方法:
首先你需要像这样设置两个(或者你需要多少个子对象)Hashmaps:
HashMap<String,Object> TESTCaseData = new HashMap<String,Object>();
最内层的Hashmap可以是:
HashMap<String,String> baseData = new HashMap<String,String>();
然后您需要通过填写任何需要的字段,从内部 Hashmap 到外部工作。
baseData.put("verkaufsproduktart","SZSSZL");
baseData.put("tarifgeneration",null);
然后将内层Hashmap转化为外层Hashmap
TESTCaseData.put("baseData",baseData);
那么你需要做的就是创建一个 Mapper 实例
ObjectWriter Obj = new ObjectMapper().enable(serializationFeature.WRAP_ROOT_value).writer().withRootName("TESTCaseData"); String jsonStr = Obj.writeValueAsString(TESTCaseData); System.out.println(jsonStr)
默认根值是“Hashmap”。如果要将其重命名为所需的名称,则需要添加:
.writer().withRootName("TESTCaseData");
就像上面的例子一样。
那就行了。以防万一有人在搜索它:-)
以上是大佬教程为你收集整理的从 HashMap<String, String> 创建多维 json全部内容,希望文章能够帮你解决从 HashMap<String, String> 创建多维 json所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。