Java—解析此示例数据的最佳方法
我有以下表格中的样本数据:Java—解析此示例数据的最佳方法,java,string,string-matching,Java,String,String Matching,我有以下表格中的样本数据: { ID:2 Type:None Reference1:6369-545.1 Reference2:6369-545.2 Name:"John Smith Abbott" Extra:"" }, { ID:3 Type:None Reference1:7854-568.1 Reference2:6369-545.2 Name:"Dave St. Ledger" Extra:"" }, { ID:4 Type:None Reference1
{
ID:2
Type:None
Reference1:6369-545.1
Reference2:6369-545.2
Name:"John Smith Abbott"
Extra:""
},
{
ID:3
Type:None
Reference1:7854-568.1
Reference2:6369-545.2
Name:"Dave St. Ledger"
Extra:""
},
{
ID:4
Type:None
Reference1:8765-177.1
Reference2:6369-545.2
Name:"Martha Stone"
Extra:""
},
{
ID:6
Type:None
Reference1:9856-487.1
Reference2:6369-545.2
Name:"Peter O'Neill"
Extra:""
},
有更多的记录,但我只提供了一个小样本,并更改了一些名称
在我看来,这是相当糟糕的格式。它与java中的JSON解析器不兼容,因为字段没有用双引号括起来,而且我无法进行大规模查找/替换。
此外,每条记录的结尾没有逗号分隔,因此虽然我可以将每条记录放入字符串[]
,但我无法进一步将它们分开。请看这里:
ID:2 Type:None Reference1:6369-545.1 Reference2:6369-545.2 Name:"John Smith Abbott" Extra:""}
通常我会split()
按空格,但由于人名中有空格,这是无法做到的
我在}上大量查找/替换,
替换为}就像我上面说的,我可以把每一条记录分开,但是不能再进一步了。我想我可能需要对这些数据执行更多的查找/替换操作,以使其可用。理想情况下,我希望能够在每行数据的末尾添加一个逗号,而无需在现有的}、
和{
行中添加逗号
最终目标是将这些数据插入数据库。
它的原始文本及其格式。我无法更改源以重新格式化它,但我可以对这些数据执行任何操作,因为它位于一个大文本文件中。这并不难:
只需逐行读取文件:
如果读取“{”,则调用readObject()方法,该方法将一直读取到下一个(包括“}”
在此readObject中:
逐行读取,并使用带分隔符的String.split()
:;
这样,第一个存储在varaible键中,值存储在val中
String lineSplitted = line.split(":");
String key = lineSplitted[0];
String value = lineSplitted[1];
现在,您可以通过将键与所有可能的键进行比较来找到要设置的成员,或者使用反射来获取名为“键”的字段。您可以使用Matcher类来分隔单个记录,然后很容易,您可以使用“:"这似乎很适合语法,但这不是你用两句话来解释的。每条记录都在自己的行上,还是你这样做是为了可读性?是的,每条记录都在自己的行上。上面是从记事本++直接复制和粘贴的。嘿,谢谢你的帮助。我逐行阅读数据,并实际转换了数据正确的JSON数据。谢谢!