1

我在找到一个很好的解决方案时遇到了一些问题:我从 RESTful API 获取 JSON 数据,我想根据某个字段的特定值对其进行过滤,处理过滤后的数据,然后将其发送到一个客户。

例如,以这个 JSON 为例:

{
"element1": {
    "width": 500,
    "height": 500
},
"element2": { 
    "width": 300,
    "height": 200
},
"element3": {
    "width": 600,
    "height": 100
}

}

我怎样才能过滤掉只有高度> = 200?或宽度< = 500的元素?当然,我可以遍历整个数据并得到我想要的,但如果 JSON 很大,这将需要很长时间,因为我想为尽可能多的客户提供服务,这似乎不是正确的方法..

PS:仅供参考,我将用java对其进行编码..

4

1 回答 1

0

用 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();
            }
        }
    }

问候

于 2012-08-03T12:30:35.863 回答