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

FileIS の代わりに ServletStream でこの例を試してください。

    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 に答える