Java字符串到Json&反之亦然

时间:2014-09-24 08:57:26

标签: java regex json string parsing

我想将基于字符串的协议转换为Json,Performance是关键

基于字符串的协议类似于

<START>A12B13C14D15<END>

和json是

{'A':12,'B':13,'C':14,'D':15}

我可以正则表达式解析字符串,创建一个地图&amp;序列化为Json,但它看起来很多工作,因为我需要实时转换流。 如果我只是进行字符串操作以获得Json输出,它会更有效吗?如何有效地进行转换?

3 个答案:

答案 0 :(得分:1)

JSON方面有很多方法可以解决这个问题。 POJO通常最方便,而不是Map,而不是final static ObjectMapper MAPPER = new ObjectMapper(); // remember to reuse for good perf public class ABCD { public int A, B, C, D; } // if you have output stream handy: ABCD value = new ABCD(...); OutputStream out = ...; MAPPER.writeValue(out, value); // or if not byte[] raw = MAPPER.writeValueAsBytes(value); 。以下使用Jackson(https://github.com/FasterXML/jackson-databind)库:


JsonGenerator jgen = MAPPER.getFactory().createGenerator(out);
jgen.writeStartObject();
jgen.writeNumberField("A", valueA);
jgen.writeNumberField("B", valueB);
jgen.writeNumberField("C", valueC);
jgen.writeNumberField("D", valueD);
jgen.writeEndObject();
jgen.close();

或者,如果你想消除更多的开销(实际上,这里不太重要):

{{1}}

这可以达到你用手写代码获得的最佳性能。

答案 1 :(得分:1)

JSON序列化性能可能不是问题。不要过早地对其进行优化。如果您推出自己的JSON序列化程序,则需要付出一些努力。让逃脱正确。如果性能确实成为问题,请查看Jackson,这是相当快的。

Java似乎非常快速地使用正则表达式,所以你可能会对它很好但要注意,很可能意外地构建一个正则表达式,其中一些输入开始大量回溯并需要几分钟来评估。您可以使用本机String方法来解析字符串。

如果性能确实是一个问题,请对不同的方法进行时序测试,选择正确的工具,看看需要时间并相应地进行优化。

答案 2 :(得分:-2)

就我而言,我使用这个库来处理Web应用程序中的json。

不记得在哪里找到。愿这有帮助:

http://www.findjar.com/class/org/json/JSONArray.html