我正在尝试将 xml 转换为 json 并将此 json 写入文件,在日志中以键值对的形式得到正确的结果,因为日志和打印处理字符串,但在运行时相同的没有得到反映为没有"," 被附加在值之后 String xml = builder.toString(); ObjectMapper mapper = new ObjectMapper(); JSONObject jsonObj = XML.toJSONObject(xml,false); FileWriter fileWriter =new FileWriter(outputFileName); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); Object json = mapper.readValue(jsonObj.toString(), Object.class); ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter()); writer.writeValue(new File(outputFileName), json);`日志输出是{ "cobrandCardPopup" : { "linkClickId" : "T10_AirActiveNeedsNonAirOnboarding_HasCardSE_HighMilesBalance", "linkLinkStatus" : "_self", "LinkTitleAttr" : "", "linkFollowCheckbox" : "", "linkURL" : "http://hotels.jetprivilege.com", "LinkAriaLabel" : "", "ToasterImageContainer" : { "ToasterMobileImage" : "/iwov-resources/images/splash-popups/Hotel_Mob.gif", "ToasterImage" : "/iwov-resources/images/splash-popups/Hotel.gif", "ToasterMobileImageAltText" : "Hotel", "ToasterImageAltText" : "Hotel" }, "LinkRoleAttr" : "", "ToasterTextContainer" : { "popupInterval" : "", "linkText" : "", "popupText" : "" }, "ToasterType" : "Image" }}该文件有{ "cobrandCardPopup" : { "linkClickId" : "T10_AirActiveNeedsNonAirOnboarding_HasCardSE_HighMilesBalance" "linkLinkStatus" : "_self" "LinkTitleAttr" : "" "linkFollowCheckbox" : "" "linkURL" : "http://hotels.jetprivilege.com" "LinkAriaLabel" : "" "ToasterImageContainer" : { "ToasterMobileImage" : "/iwov-resources/images/splash-popups/Hotel_Mob.gif" "ToasterImage" : "/iwov-resources/images/splash-popups/Hotel.gif" "ToasterMobileImageAltText" : "Hotel" "ToasterImageAltText" : "Hotel" }, "LinkRoleAttr" : "" "ToasterTextContainer" : { "popupInterval" : "" "linkText" : "" "popupText" : "" }, "ToasterType" : "Image" }}
1 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
您应该尽可能少地进行数据转换,以 1. 简化代码和 2. 减少错误的可能性
您可以执行以下任一操作:根本不要使用jackson objectmapper,因为您已经映射到JsonObject
String xml = builder.toString();
JSONObject jsonObj = XML.toJSONObject(xml);
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(outputFileName));
bufferedWriter.write(jsonObj.toString())
或者直接使用jackson的fileWriter:
ObjectMapper mapper = new ObjectMapper();
ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter());
writer.writeValue(new File(outputFileName), jsonObj);
添加回答
举报
0/150
提交
取消
