gpt4 book ai didi

java - 改进 Java 中将 Json 转换为 XML 或反之亦然的程序

转载 作者:行者123 更新时间:2023-12-01 16:49:51 25 4
gpt4 key购买 nike

需要一些帮助来重构 Java 代码,该代码将一个字符串作为 XML 标记或 JSON 键值对的输入,并返回其等效的 JSON 或 XML。程序中只使用了简单的String方法。我想要关于如何使代码更小和更通用的建议。在某些情况下,代码会失败。例如,当属性添加到 XML 时。在这些情况下是否有任何模块或技巧可以非常有帮助?代码是-

package converter;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String inputString = sc.nextLine(); // input string
if (inputString.startsWith("<")) { // if string is xml
if (inputString.contains("/>")) { // if xml is a self closing tag
int startIndex = inputString.indexOf('<');
int endIndex = inputString.indexOf("/>");
String key = inputString.substring(startIndex+1,endIndex);
System.out.println(createJSON(key));
}
else {
String key = extractKeyFromXML(inputString);
String value = extractValueFromXML(inputString);
System.out.println(createJSON(key,value));
}
}
else if (inputString.startsWith("{")) { // if string is JSON
if(inputString.contains("null")) { // if JSON contains a null value
String key = extractKeyFromJSON(inputString);
System.out.println(createXML(key));
}
else {
String key = extractKeyFromJSON(inputString);
String value = extractValueFromJSON(inputString);
System.out.println(createXML(key, value));
}
}
}

public static String extractKeyFromXML(String xmlStr) {
int startIndex = xmlStr.indexOf('<');
int endIndex = xmlStr.indexOf('>');
return xmlStr.substring(startIndex + 1, endIndex).trim();
}

public static String extractValueFromXML(String xmlStr) {
int startIndex = xmlStr.indexOf('>');
int endIndex = xmlStr.indexOf("</");
return xmlStr.substring(startIndex + 1, endIndex).trim();
}

public static String createJSON(String key, String value) {
return "{\"" + key + "\":\"" + value + "\"}";
}

public static String createJSON(String key) {
return "{\"" + key + "\" : null }";
}

public static String extractKeyFromJSON(String jsonStr) {
int startIndex = jsonStr.indexOf('{');
int endIndex = jsonStr.indexOf(':');
return jsonStr.substring(startIndex + 1, endIndex).replaceAll("\"", "").strip();
}

public static String extractValueFromJSON(String jsonStr) {
int startIndex = jsonStr.indexOf(':');
int endIndex = jsonStr.indexOf("}");
return jsonStr.substring(startIndex + 1, endIndex).replaceAll("\"", "").strip();
}

public static String createXML(String key, String value) {
return "<" + key + ">" + value + "</" + key + ">";
}

public static String createXML(String key) {
return "<" + key + "/>";
}

}

最佳答案

在消除错误之前,将其变得更小或更通用是没有意义的。它充满了关于输入的假设,例如 XML 元素将在它们开始的同一行结束,或者每行只有一个元素,或者该值不会包含特殊字符,如 "<

不要尝试以这种方式“手动”解析 XML,应始终使用真正的 XML 解析器。 StackOverflow 充满了“我如何生成像 {insert oddball Rule here} 这样的 XML,因为接收应用程序只接受这种形式的 XML”形式的问题。不要成为这个问题的一部分。

关于java - 改进 Java 中将 Json 转换为 XML 或反之亦然的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61712147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com