【问题标题】:Android: How to ignore javascript variables from JSON?Android:如何忽略来自 JSON 的 javascript 变量?
【发布时间】:2017-03-13 03:49:33
【问题描述】:

我正在从包含 JavaScript 变量的 JSON 文件中检索数据。(我没有制作此文件,我无法修改它)

var name = [ { "01":"fred", "02":"mary", "03":"jake" } ]
var day = [ {"01" : "true", "02" : "false", "03" : "true", "04" : "false", "05" : "true", "06" : "true"}]

我已经知道如何使用 JSONReader 读取此内容,但除非我在输入流上使用 skip 方法,否则我无法使用该方法,因为它们的值可以更改。

我只想得到以下解析

[ { "01":"fred", "02":"mary", "03":"jake" } ]
[ {"01" : "true", "02" : "false", "03" : "true", "04" : "false", "05" : "true", "06" : "true"}]

【问题讨论】:

  • 你希望它如何解析?成地图(字典)?变成一个物体?
  • 所以它实际上是一个 javascript 文件,而不是 JSON 对象/文件?为什么不像普通文本文件那样读取它,在“=”处分割每一行,然后将右侧解析为 JSONObject?

标签: javascript android json


【解决方案1】:

您可以使用this 答案中描述的方法,例如,创建这样的方法:

public List<String> extractJSONStringsfromText(String text, final String  symbolBegin, final String  symbolEnd) {
    int ixBeginJSON = 0;
    int ixEndJSON = 0;
    String textJSON;
    List<String> textsJSON = new ArrayList<>();

    ixBeginJSON = text.indexOf(symbolBegin, ixBeginJSON + 1);

    do {
        ixEndJSON = text.lastIndexOf(symbolEnd);
        if(ixEndJSON <= ixBeginJSON) {
            break;
        }

        do {
            textJSON = text.substring(ixBeginJSON, ixEndJSON + 1);
            try {
                if (symbolBegin.equals("[")) {
                    new JSONArray(textJSON);
                } else {
                    new JSONObject(textJSON);
                }
                textsJSON.add(textJSON);
            } catch (Exception ignore) {
            }
            ixEndJSON = text.substring(0, ixEndJSON).lastIndexOf(symbolEnd);
        } while(ixEndJSON > ixBeginJSON);

        ixBeginJSON = text.indexOf(symbolBegin, ixBeginJSON + 1);

    } while(ixBeginJSON != -1);

    return textsJSON;
}

你可以这样称呼它:

ArrayList<String> jsonLines = (ArrayList) extractJSONStringsfromText(text, "[", "]");
for (String jsonLine : jsonLines) {
    Log.d(TAG, "jsonLine: '" + jsonLine + "'");
}

【讨论】:

    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2018-02-22
    相关资源
    最近更新 更多