从 JSON 字符串解析单个值的最快方法
Fastest way to parse single value from JSON string
我有一个从 websocket 中获取的字符串,格式如下 JSON。我想要一种非常低延迟的方式来解析与键 C
关联的值 c
。我收到的每个数据包的键名都相同,但值可能不同。因此,键 C
将保持不变,但值可以从 c
变为可能更长的值。在我的实际应用程序中,X
和 Y
中的条目数可能要长得多。
我尝试了几种不同的方法,包括使用 Jackson [1] 解析单个字段,将整个字符串解析为 JsonNode
,但它们都太慢了(超过 50 微秒)。我想使用 [2] 在 "C"
的字符串中找到位置,然后取下接下来的几个字符,但问题是值 c
是可变长度的,因此这很棘手。
String s = {"A":"a","B":"b","data":[{"C":"c","X":[["3.79","28.07","1"],["3.791","130.05","3"],["3.792","370.8958","5"]],"Y":[["3.789","200","1"],["3.788","1238.1709","4"],["3.787","513.4051","3"]]}'
我想要这样的东西:
String valueOfC = getValueOfC(s) // return in only a few microseconds
[1]
[2] Java: method to get position of a match in a String?
s.substring(s.indexOf("\"data\":[{\"C") + 4, s.indexOf("\"",s.indexOf("\"data\":[{\"C") + 4)));
这是亚微秒。
我有一个从 websocket 中获取的字符串,格式如下 JSON。我想要一种非常低延迟的方式来解析与键 C
关联的值 c
。我收到的每个数据包的键名都相同,但值可能不同。因此,键 C
将保持不变,但值可以从 c
变为可能更长的值。在我的实际应用程序中,X
和 Y
中的条目数可能要长得多。
我尝试了几种不同的方法,包括使用 Jackson [1] 解析单个字段,将整个字符串解析为 JsonNode
,但它们都太慢了(超过 50 微秒)。我想使用 [2] 在 "C"
的字符串中找到位置,然后取下接下来的几个字符,但问题是值 c
是可变长度的,因此这很棘手。
String s = {"A":"a","B":"b","data":[{"C":"c","X":[["3.79","28.07","1"],["3.791","130.05","3"],["3.792","370.8958","5"]],"Y":[["3.789","200","1"],["3.788","1238.1709","4"],["3.787","513.4051","3"]]}'
我想要这样的东西:
String valueOfC = getValueOfC(s) // return in only a few microseconds
[1]
[2] Java: method to get position of a match in a String?
s.substring(s.indexOf("\"data\":[{\"C") + 4, s.indexOf("\"",s.indexOf("\"data\":[{\"C") + 4)));
这是亚微秒。