我在寻找这个问题的良好解决方案时遇到了一些问题:我从 RESTful API 获取 JSON 数据,我想根据某个字段的特定值对其进行过滤,使用过滤后的数据,然后将其发送给客户。
例如,采用以下 JSON:
{
"element1": {
"width": 500,
"height": 500
},
"element2": {
"width": 300,
"height": 200
},
"element3": {
"width": 600,
"height": 100
}
}
如何仅过滤掉高度 >=200 或宽度 <=500 的元素? 当然,我可以迭代整个数据并获得我想要的内容,但是如果 JSON 非常大,则需要很长时间,而且由于我想为尽可能多的客户提供服务,这似乎不是正确的方法..
PS:仅供引用,我将用 java 对其进行编码..
最佳答案
使用 ServletStream 而不是 FileIS 尝试此示例
import java.io.FileInputStream;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
import de.odysseus.staxon.json.JsonXMLInputFactory;
public class Test {
static XMLInputFactory ir = new JsonXMLInputFactory();
public static void main(String[] args) throws Exception {
FileInputStream servletInput = new FileInputStream("d:/test.json");
XMLStreamReader reader = ir.createXMLStreamReader(servletInput,
"UTF-8");
int typ = reader.next();
while (typ != XMLStreamConstants.END_DOCUMENT) {
if (typ == XMLStreamConstants.START_ELEMENT) {
String tagName = reader.getName().getLocalPart();
if (tagName.equals("width")) {
if (Integer.parseInt(reader.getElementText()) > 500) {
System.out.println("!FOUND!");
}
}
}
typ = reader.next();
}
}
}
问候
关于java - 如何以良好的性能过滤 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11793953/