【问题标题】:Value STRING_TOO_LARGE of type值 STRING_TOO_LARGE 类型
【发布时间】:2019-05-29 04:32:57
【问题描述】:

我有一个字符串没有转换成 json 数组:

 {
        \"mantra\": \"प्रातः एवं सांयकालमा आरतीगर्दा भन्ने श्लोक\",
        \"mantra_detail\": \"ॐ जय जगदिश हरे, प्रभु जय जगदिश हरे \n ”प्रभुका चरण उपासक”  ”हरिका चरण उपासक” कति कति पार तरे ।। १ ।।  \nॐ जय जगदिश हरे \n \nमनको थाल मनोहर ”प्रेमरुप वाती”२ ।। प्रभु ।। \n”भाव कपूर छ मड्डल”२ आरती सब भाती ।। २ ।। \nॐ जय जगदिश हरे \n \nनित्य नीरञ्जन निर्मल ”कारण अविनाशी”२ ।। प्रभु ।। \n”शरणागत प्रतिपालक”२ चिन्मय सुखराशि ।। ३ ।। \nॐ जय जगदिश हरे \n \nसृष्टि–स्थिति, लयकर्ता, ”त्रिभुवनका स्वामी”२ ।। प्रभु ।। \n”भक्ति सुधा वर्षाउ” ”प्रेम सुधा वर्षाउ” \n शरण पर्यौं  हामी ।। ४ ।। \n ॐ जय जगदिश हरे \n \nआसुरभाव निवारक, ”तारक सुखदाता”२ ।। प्रभु ।। \n”गुण अनुरुप तिमी हौ”२ हरिहर औ धाता ।। ५ ।। \nॐ जय जगदिश हरे \n \nयुग युग पालन गर्छौ, ”अगणित रुप धरी”२ ।। प्रभु ।। \n”लीलामय रस विग्रह”२ करुणा मूर्ति हरि ।। ६ ।। \nॐ जय जगदिश हरे \n \nसमता शान्ति प्रदायक, ”सज्जन हितकारी”२ ।। प्रभु ।। \n”चरण शरण अब पाउ”२ प्रभु भव भयहारी ।। ७ ।। \nॐ जय जगदिश हरे \n \nभाव मनोहर देउ, ”साधक फलदायी”२ ।। प्रभु ।। \n”जीवन धन्य बनोस्”२ प्रभु पद सेवा पाई ।। ८ ।। \nॐ जय जगदिश हरे \n \nसंयम सुर–सरिताको, ”अविरल धार बहोस्”२ ।। प्रभु ।। \n”जति जति जन्म भएपनि” जहा जहा जन्म भएपनि” \n प्रभुमा प्रेम रहोस् ।। ९ ।। \n ॐ जय जगदिश हरे \n \nप्रेम सहित शुभ आरती, ”जसले नित्य गर्यो”२ ।। प्रभु ।। \n”दिन दिन निर्मल बन्दै” ”प्रतिदिन पावन बन्दै” \nत्यो भव सिन्धु तर्यो ।। १० ।। \nॐ जय जगदिश हरे, प्रभु जय जगदिश हरे..\"
    },

我的代码:

private Observable<List<MantraDTO>> getMantraObservable() {
    return Observable.just(1).map(integer -> getMantraList(getMantraStringFromXml()));
}

public String getMantraStringFromXml(){
    return  getActivity().getString(R.string.mantra);
}

public  List<MantraDTO> getMantraList(String mantraString) {
    List<MantraDTO> mantraList = new ArrayList<>();

    try {
        JSONArray mantraJsonData = new JSONArray(mantraString);
        int length = mantraJsonData.length();
        for (int i = 0; i < length; i++) {
            mantraList.add(parseMantra(mantraJsonData.optJSONObject(i)));

        }
    } catch (JSONException e) {

        e.printStackTrace();
    }
}

这给我错误:

W/System.err:org.json.JSONException:值 STRING_TOO_LARGE 类型
java.lang.String 无法转换为 JSONArray 在 org.json.JSON.typeMismatch(JSON.java:111) 在 org.json.JSONArray.(JSONArray.java:96) 在 org.json.JSONArray.(JSONArray.java:108) 在 com.toyanathpatro.gurkha.fragments.MantraFragment.getMantraList(MantraFragment.java:153) 在 com.toyanathpatro.gurkha.fragments.MantraFragment.lambda$getMantraObservable$0$MantraFragment(MantraFragment.java:106)

我该如何解决这个错误?

【问题讨论】:

  • 这是字符串还是对象?
  • 在使用过大的字符串时考虑使用StringBuilder
  • 这不是有效的 JSON。您正在转义字符串周围的引号。删除那些(例如,\"mantra\": 应该是 "mantra":),看看它是否有效。
  • json数据没有问题。我在Observable.just(1).map(integer -&gt; getMantraList(getMantraStringFromXml())); 出了点问题。因为我尝试了这个 json 数据并进行了解析。它工作正常。我可以使用mantramantra_detail 获取列表。
  • 我还有一些其他的小字符串。它们的格式相同。

标签: java android json string


【解决方案1】:

试试这个,它会从那个字符串中删除像“\”这样的字符。 json = json.replace("\\"","'"); JSONObject jo = new JSONObject(json.substring(1,json.length()-1));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 2014-09-21
    • 2021-07-16
    • 2010-12-11
    • 1970-01-01
    • 2012-07-20
    • 2020-07-21
    相关资源
    最近更新 更多