我想将jnvalid JSON数据转换为有效的JSON数据。我有如下JSON。有没有使用Java改变它的逻辑?
{
name: date,
order: 1,
required: true,
type: date,
placeholder: Expense Date
}
我想要有效的JSON数据格式如下:
{
"name": "date",
"order": "1",
"required": "true",
"type": "date",
"placeholder": "Expense Date"
}
答案 0 :(得分:3)
我不打算为你做,因为你没有提供你所做的任何代码,但我将指导你如何做到这一点。 逐行迭代文件或字符串,无论你拥有它。 然后实例化一个字符串构建器以继续附加有效的JSON。 将第一个引用附加到字符串构建器,然后在一行上使用line.split(':')来获取具有行的前半部分和后半部分的数组。然后将splitLine [0](上半部分)附加到字符串构建器上,追加冒号,附加行splitLine [1]的后半部分,最后附加最后一个引号和逗号。现在为每一行执行此操作,您将拥有有效的JSON。
这是我上面解释的工作版本。
String inputString = "name: date, order: 1, required: true, type: date, placeholder: Expense Date";
StringBuilder validJson = new StringBuilder();
validJson.append("{");
String[] lineByLine = inputString.split(",");
for(int i =0; i< lineByLine.length; i++){
String[] lineSplit = lineByLine[i].split(":");
validJson.append('"').append(lineSplit[0].trim()).append('"').append(":").append('"').append(lineSplit[1].trim()).append('"').append(i==lineByLine.length-1?"}":",");
}
String finishedJSON = validJson.toString();
System.out.println(finishedJSON);
最后的位可能看起来有些混乱
i==lineByLine.length-1?"}":","
但它正在做的是检查它是否是JSON的最后一行用括号关闭它,否则为下一个属性准备一个逗号
答案 1 :(得分:1)
你可以使用replaceAll和regex:
String str = "{ name: date, order: 1, required: true, type: date, placeholder: Expense Date }";
/*remove '{' and '}' for trim*/
String trim = str.substring(1, str.length() - 1).trim();
/* x:y => "x":y */
trim = trim.replaceAll("([a-zA-Z0-9]+)(\\s*\\:)", "\\\"$1\\\"$2");
/* "x":y => "x":"y" */
trim = trim.replaceAll("(\\:\\s*)([a-zA-Z0-9\\s]+)", "$1\\\"$2\\\"");
str = '{' + trim + '}';
答案 2 :(得分:-1)
可以通过“:”
分割字符串来完成