将无效的Json转换为有效的json android?

我想将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" } 

我不打算为你做,因为你没有提供任何代码来完成你所做的事情,但我将指导你如何去做。 逐行迭代文件或字符串,无论你拥有它。 然后实例化一个字符串生成器以继续附加有效的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的最后一行用括号关闭它,否则为下一个属性准备一个逗号

你可以使用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 + '}'; 

它可以通过“:”拆分字符串来完成