首页 > 解决方案 > 从 JSON 字符串中解析单个值的最快方法

问题描述

我有一个从以下 JSON 格式的 websocket 获得的字符串。我想要一种非常低延迟的方式来解析c与 key 关联的值C。我收到的每个数据包的键名都相同,但值可能不同。因此,密钥C将保持不变,但值可能会更改c为更长的值。在我现实生活中的应用程序中,里面的条目数量XY可以更长。

我尝试了几种不同的方法,包括使用 Jackson [1] 解析单个字段,将完整字符串解析为JsonNode,但它们都太慢(超过 50 微秒)。我想在"C"使用 [2] 的字符串中找到位置,然后在之后获取接下来的几个字符,但问题是值 ,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]如何使用 Jackson 读取单个 JSON 字段

[2] Java:获取字符串中匹配位置的方法?

标签: javajsonparsingjacksonobjectmapper

解决方案


s.substring(s.indexOf("\"data\":[{\"C") + 4, s.indexOf("\"",s.indexOf("\"data\":[{\"C") + 4)));

这是亚微秒。


推荐阅读