繁体   English   中英

如何使用Java将以下字符串转换为Json?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM