4

現在のプロジェクトでは、Web から JavaScript ファイルを読み取り、そこからオブジェクトを抽出する必要があります。変数は時々変わる可能性があるため、Android アプリにハードコーディングするのではなく、読み取る必要があります。

次の変数を抽出したいとします (その後、JSONObject を使用して文字列を解析しますが、これは簡単です)。

var abc.xyz = {
"a": {"one", "two", "three"},
"b": {"four", "five"}
}

これには問題があります。名前を探してその値を取得するためだけに、コンパイラのようなスキャナーを実装する必要がありますか、または使用できる既存のツールがありますか?

JavaScript ファイルは、この例ほど単純ではありません。他にもたくさんのコードが含まれています。そのため、単純なnew JSONObject()ものや何かではうまくいきません。

4

2 に答える 2

1

Java には、JSON を解析するためのライブラリが多数あります。JSON.orgにリストがあります

Javaでファイルを読む

import org.json.JSONObject;

URL url = new URL("http://example.com/foo.js");
InputStream urlInputStream = url.openStream();
JSONObject json = new JSONObject(urlInputStream.toString());  
于 2012-11-05T13:20:08.180 に答える
0

最後に自分でコーディングします。

//remove comments
private String removeComment(String html){
    String commentA = "/*";
    String commentB = "*/";
    int indexA, indexB;
    indexA = html.indexOf(commentA);
    indexB = html.indexOf(commentB);
    while(indexA != -1 && indexB != -1 ){
        html = html.substring(0, indexA) + html.substring(indexB + commentB.length());
        indexA = html.indexOf(commentA);
        indexB = html.indexOf(commentB);
    }
    return html;
}

    //find variable with name varName
private String findVar(String varName, String html, char lBrace, char rBrace){
    String tmp = html.substring(html.indexOf(varName));
    tmp = tmp.substring(tmp.indexOf(lBrace));

    int braceCount = 0;
    int index = 0;
    while(true){
        if(tmp.charAt(index) == lBrace){
            braceCount ++;
        }else if(tmp.charAt(index) == rBrace){
            braceCount --;
        }
        index ++;
        if(braceCount == 0){
            break;
        }
    }
    return tmp.substring(0, index);
}
于 2012-11-06T08:30:39.583 に答える