gpt4 book ai didi

java - 如何将json数组拆分成字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:15 39 4
gpt4 key购买 nike

我有一个 String 和一个由对象组成的 json 数组,如下所示:

 [{..},{..}, ...]

我想将此数组中的每个对象提取为字符串。数组长度未知,对象任意。

一种天真的方法可能是简单地拆分 "},{",但它在实践中行不通。当然,我可以将字符串反序列化为 Java 对象数组,然后将每个对象序列化为字符串,但这并不安全,因为最终输出可能不再是逐字节精确的输入(这是一项要求。此外,性能可能是个问题)。

有什么想法吗?

最佳答案

好吧,我有点不好意思发布这段代码。它根本不是最佳选择,看起来很糟糕,但如果您想要完全不变的内容,它可能会引导您走向正确的方向。

enum ParserState {
READING_OBJECT,
READING_ARRAY
}


public static List<String> extractObjects(String array) throws ParseException {
ParserState state = ParserState.READING_ARRAY;
ArrayList<String> result = new ArrayList<String>();
StringBuilder currentObject = null;
int i = 0;
int parenthesisBalance = 0;
for (char c : array.toCharArray()) {
switch (c) {
case '{': {
if (state == ParserState.READING_ARRAY) {
state = ParserState.READING_OBJECT;
currentObject = new StringBuilder();
}
parenthesisBalance++;
currentObject.append(c);
break;
}
case '}': {
if (state == ParserState.READING_ARRAY) {
throw new ParseException("unexpected '}'", i);
} else {
currentObject.append(c);
parenthesisBalance--;
if (parenthesisBalance == 0) {
state = ParserState.READING_ARRAY;
result.add(currentObject.toString());
}
}
break;
}
default: {
if (state == ParserState.READING_OBJECT) {
currentObject.append(c);
}
}
}
i++;
}
return result;
}

关于java - 如何将json数组拆分成字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28478919/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com