为了账号安全,请及时绑定邮箱和手机立即绑定

当我使用 java 从 XML 转换为 Json 时,无法在 JSON 文件中的键值对后附加“,”

当我使用 java 从 XML 转换为 Json 时,无法在 JSON 文件中的键值对后附加“,”

FFIVE 2022-04-28 15:42:45
我正在尝试将 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);


查看完整回答
反对 回复 2022-04-28
  • 1 回答
  • 0 关注
  • 190 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号