[英]How to Convert following String to Json using Java?
我需要将以下字符串转换为json格式。
以下是输入以及预期的输出,以供参考。
输入:
Employee Driver Report - EDR
--------------------------------
Employee Nbr: 123480 Employee Type: DI Cat: UPL
Driver License: PP3P30 Plate: ROWP
Part Number: 1006096
输出:
{
"Employee Nbr": "123480",
"Employee Type": "DI",
"Cat": "UPL",
"Driver License": "PP3P30",
"Plate": "ROWP",
"Part Number": "1006096",
}
样例代码:
Map<String, String> keyValueMap = new HashMap<String, String>();
String[] lines = rawText.split(System.getProperty("line.separator"));
for(String line: lines) {
.......
keyValueMap.put(keyAndValues[i], keyAndValues[i + 1]);
}
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(keyValueMap);
您能帮我解决这个问题吗?
提前致谢。
对于获得的每一line
,都必须使用:
和进行解析 (空格)作为分隔符。
我会让您搜索要使用的正确正则表达式,并在需要时寻求帮助;)
您可以使用这样的表达式: ([\\w\\s]+\\s*):\\s*([\\w]+)
( 此处为示例)来处理数据。 该表达式假定您的value参数中没有空格。
因此,给出以下代码:
String source = "Employee Driver Report - EDR\n" +
"--------------------------------\n" +
"Employee Nbr: 123480 Employee Type: DI Cat: UPL\n" +
"Driver License: PP3P30 Plate: ROWP\n" +
"Part Number: 1006096";
String[] lines = source.split("\n");
Pattern p = Pattern.compile("([\\w\\s]+\\s*):\\s*([\\w]+)");
System.out.println("{");
for(int i = 2; i < lines.length; i++)
{
Matcher m = p.matcher(lines[i]);
while(m.find())
{
System.out.println("\"" + m.group(2).trim() + "\":" + "\"" + m.group(1).trim() + "\"");
}
}
System.out.println("}");
您将获得如下内容:
{
"Employee Nbr":"123480"
"Employee Type":"DI"
"Cat":"UPL"
"Driver License":"PP3P30"
"Plate":"ROWP"
"Part Number":"1006096"
}
编辑:根据您的评论:
String source = "Employee Driver Report - EDR\n" +
"--------------------------------\n" +
"Employee Nbr: 123480 With white space Employee Type: DI Cat: UPL\n" +
"Driver License: PP3P30 Plate: ROWP\n" +
"Part Number: 1006096";
String[] lines = source.split("\n");
Pattern p = Pattern.compile("(Employee Nbr|Employee Type|Cat|Driver License|Plate|Part Number)\\s*:\\s*(.+?)(?:(?=Employee Nbr|Employee Type|Cat|Driver License|Plate|Part Number)|$)");
System.out.println("{");
for(int i = 2; i < lines.length; i++)
{
Matcher m = p.matcher(lines[i]);
while(m.find())
{
System.out.println("\"" + m.group(1).trim() + "\":" + "\"" + m.group(2).trim() + "\"");
}
}
System.out.println("}");
产量:
{
"Employee Nbr":"123480 With white space"
"Employee Type":"DI"
"Cat":"UPL"
"Driver License":"PP3P30"
"Plate":"ROWP"
"Part Number":"1006096"
}
此处提供了更新后的表达式的描述。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.