Java 将json字符串解析为json数组问题

Java 将json字符串解析为json数组问题,java,android,json,string,Java,Android,Json,String,我的数据来自android中的web服务,如下所示: "[{\"ID\":9617,\"Text\":\"1 1\/4\\\" PVC\/GI CLAMPS\"},{\"ID\":41608,\"Text\":\"100123-Manterial name\"}]" 现在的问题是,我想将这个json数据解析为json数组,但由于字符串中的双引号(“),它给了我错误异常,我尝试手动删除反斜杠。我使用类似这样的代码将其转换为json数组 String line="[{\"ID\":9617,\"T

我的数据来自android中的web服务,如下所示:

"[{\"ID\":9617,\"Text\":\"1 1\/4\\\" PVC\/GI CLAMPS\"},{\"ID\":41608,\"Text\":\"100123-Manterial name\"}]"
现在的问题是,我想将这个json数据解析为json数组,但由于字符串中的双引号(“),它给了我错误异常,我尝试手动删除反斜杠。我使用类似这样的代码将其转换为json数组

String line="[{\"ID\":9617,\"Text\":\"1 1\/4\\\" PVC\/GI CLAMPS\"},{\"ID\":41608,\"Text\":\"100123-Manterial name\"}]";
String  jsonFormattedString = line.replace("\\\\", "");
jsonFormattedString= jsonFormattedString.substring(1, jsonFormattedString.length()-1) ;
Log.d("Json String--->",jsonFormattedString);

JSONArray j = new JSONArray(jsonFormattedString);//here I get exception cannot covert to json array 

JSONObject jsonmain = j.getJSONObject(0);

int lengthJsonArr = j.length();

for(int i=0; i < lengthJsonArr; i++) {

    jsonmain = j.getJSONObject(i);
    Log.d("Jsonnnnn----",jsonmain.getString("Text"));
    Itm=new CItem(jsonmain.getString("ID"),jsonmain.getString("Text"));
    lstItm.add(Itm);
}
String line=“[{\'ID\':9617,\'Text\':\'11\/4\\\'PVC\/GI-clips\',{\'ID\':41608,\'Text\':\'100123 Manterial name\'”;
字符串jsonFormattedString=line.replace(“\\\\”,“”);
jsonFormattedString=jsonFormattedString.substring(1,jsonFormattedString.length()-1);
Log.d(“Json字符串-->”,jsonFormattedString);
JSONArray j=新的JSONArray(jsonFormattedString)//这里我得到的异常无法转换为json数组
JSONObject jsonmain=j.getJSONObject(0);
int lengthJsonArr=j.length();
for(int i=0;i
您尝试过这样做吗

String  jsonFormattedString = line.replaceAll("\\\\", "");
试试这个方法

public String convertStandardJSONString(String data_json){
    data_json = data_json.replace("\\", "");
    data_json = data_json.replace("\"{", "{");
    data_json = data_json.replace("}\",", "},");
    data_json = data_json.replace("}\"", "}");
    return data_json;
}
@参考:Cristy YG

  public static String convertStandardJSONString(String data_json) {
      data_json = data_json.replaceAll("\\\\r\\\\n", "");
      data_json = data_json.replace("\"{", "{");
      data_json = data_json.replace("}\",", "},");
      data_json = data_json.replace("}\"", "}");
      return data_json;
  } 
  • 首先确保您的JSON是有效的。复制并粘贴到这里(jsonlint.com)和 检查它是否有效
  • 如果您认为json是有效的。尝试上述方法(
    convertStandardJSONString
  • 您需要知道响应JSON结构。无法将JSONObject解析为JSONArray或将JSONArray解析为JSONObject

  • 您使用的是replace,而不是replaceAll。我认为您的JSON无效。不,唯一的问题是数据中包含双引号。
    字符串应该用双引号括起来。
    ,为什么要转义这些引号?@mubu9082:使用此工具验证JSON Omg,我知道这个问题。您正在创建一个
    JSONObject
    ,它已经是一个
    JSONObject
    。因此,请您的php开发人员更改此格式,并尝试创建一个
    JSONObject
    JSONArray