我正在解析包含 json 对象的文件。问题是某些文件在一行中有多个对象。例如:
{"data1": {"data1_inside": "bla{bl\"a"}}{"data1": {"data1_inside": "blabla["}}{"data1": {"data1_inside": "bla{bla"}}{"data1": {"data1_inside": "bla["}}
Run Code Online (Sandbox Code Playgroud)
我制作了一个函数,当没有左括号时尝试解析子字符串,但值中可能有大括号。我尝试通过检查引号的开头和结尾来跳过值,但也有带有转义引号的值。关于如何处理这个问题的任何想法?
我的尝试:
def get_lines(data):
lines = []
open_brackets = 0
start = 0
is_comment = False
for index, c in enumerate(data):
if c == '"':
is_comment = not is_comment
elif not is_comment:
if c == '{':
if not open_brackets:
start = index
open_brackets += 1
if c == '}':
open_brackets -= 1
if not open_brackets:
lines.append(data[start: index+1])
return lines
Run Code Online (Sandbox Code Playgroud) 假设我从套接字服务器(我无法控制)收到此字符串:
{"data":{"time":"2016-08-08T15:13:19.605234Z","x":20,"y":30}}{"data":{"time":"2016-08-08T15:13:19.609522Z","x":30,"y":40}}
Run Code Online (Sandbox Code Playgroud)
我不能使用JSON.parse,因为它包含2个Json字符串,所以我怎么能分成
var jsonString1 = {"data":{"time":"2016-08-08T15:13:19.605234Z","x":20,"y":30}}
Run Code Online (Sandbox Code Playgroud)
和
var jsonString2 = {"data":{"time":"2016-08-08T15:13:19.609522Z","x":30,"y":40}}
Run Code Online (Sandbox Code Playgroud)
注意:我实际上可能有1到n个Json字符串连接在一起