Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过转义字符解析JSON字符串_Java_Json_String_String Parsing - Fatal编程技术网

Java 通过转义字符解析JSON字符串

Java 通过转义字符解析JSON字符串,java,json,string,string-parsing,Java,Json,String,String Parsing,我从DB收到以下字符串 { "MyDetails": { "Type1": "A", "Type2": "B", "Type3": "C", "Type4": "D", "Type5": "E", "Type6": "F", "Date1": "2000-02-11" } } 我已经创建了解析JSON字符串的语法,但是上面的格式给了我一个错误字符串,我无法用它来构造字

我从DB收到以下字符串

{
    "MyDetails": {
        "Type1": "A",
        "Type2": "B",
        "Type3": "C",
        "Type4": "D",
        "Type5": "E",
        "Type6": "F",
        "Date1": "2000-02-11"
    }
}
我已经创建了解析JSON字符串的语法,但是上面的格式给了我一个错误字符串,我无法用它来构造字符串

JSONObject obj = new JSONObject("{MYDETAILS:{TYPE: A,CLASS: B}}");
System.out.println(obj);
JSONObject array = obj.getJSONObject("MYDETAILS");
System.out.println(array);
for (int i = 0; i < array.length(); i++) {
  System.out.println(array.getString("CLASS"));
}

jsonobjectobj=newjsonobject(“{MYDETAILS:{TYPE:A,CLASS:B}”);
系统输出打印项次(obj);
JSONObject数组=obj.getJSONObject(“MYDETAILS”);
System.out.println(数组);
对于(int i=0;i
如何将DB中的字符串转换为Java中的有效字符串

我想这应该能给我答案

问题在于从DB接收到的字符串数据,我无法转换为字符串

JSONObject obj = new JSONObject("{MYDETAILS:{TYPE: A,CLASS: B}}");
System.out.println(obj);
JSONObject array = obj.getJSONObject("MYDETAILS");
System.out.println(array);
for (int i = 0; i < array.length(); i++) {
  System.out.println(array.getString("CLASS"));
}

如何动态删除引号以便形成有效字符串?

基本上,您对JSON编码感到困惑,您拥有的这个字符串是MyDetails对象的一个实例,您可以像这样解析它:

JSONObject ob = obj.getJSONObject("MYDETAILS");
System.out.println(ob.getString("CLASS"));
{"MyDetails": [
      {  "CLASS": "A" },
      {  "CLASS": "B"},      
    ]}
JSONObject root = ...;
JSONObject details = (JSONObject) root.get("MyDetails");
String type1 = (String) details.get("Type1");
String type2 = (String) details.get("Type2");
// and so on
如果MyDetails实际上是一个数组,那么JSON将使用如下方括号:

JSONObject ob = obj.getJSONObject("MYDETAILS");
System.out.println(ob.getString("CLASS"));
{"MyDetails": [
      {  "CLASS": "A" },
      {  "CLASS": "B"},      
    ]}
JSONObject root = ...;
JSONObject details = (JSONObject) root.get("MyDetails");
String type1 = (String) details.get("Type1");
String type2 = (String) details.get("Type2");
// and so on
在这种情况下,您的代码将是:

JSONArray array = obj.getJSONArray("MYDETAILS");
System.out.println(array);
for (int i = 0; i < array.length(); i++) {
  System.out.println(array.get(i).getString("CLASS"));
}
JSONArray数组=obj.getJSONArray(“MYDETAILS”);
System.out.println(数组);
对于(int i=0;i
希望您现在可以看到差异。

解析此JSON

{
    "MyDetails": {
        "Type1": "A",
        "Type2": "B",
        "Type3": "C",
        "Type4": "D",
        "Type5": "E",
        "Type6": "F",
        "Date1": "2000-02-11"
    }
}
您可以使用如下内容:

JSONObject ob = obj.getJSONObject("MYDETAILS");
System.out.println(ob.getString("CLASS"));
{"MyDetails": [
      {  "CLASS": "A" },
      {  "CLASS": "B"},      
    ]}
JSONObject root = ...;
JSONObject details = (JSONObject) root.get("MyDetails");
String type1 = (String) details.get("Type1");
String type2 = (String) details.get("Type2");
// and so on

你收到了什么?JSON或
{MYDETAILS:{TYPE:A,CLASS:B}
?我无法解析这个{“MYDETAILS”:{“Type1”:“A”,“Type2”:“B”,“Type3”:“C”,“Type4”:“D”,“Type5”:“E”,“Type6”:“F”,“Date1”:“2000-02-11”}由于存在大量双引号,我无法在java中将其作为字符串获取。如果您想在测试用例中使用文本字符串,则必须“转义”所有内部引号:
new JSONObject({“MyDetails\”:{“Type1\”:“a\”,“Type2\”:“B\”,…}”)
JSONObject obj=new JSONObject({MyDetails:{TYPE:a,CLASS:B});很好用。这是我试过的方法。但真正的反应是JSONObject obj=新的JSONObject(“{”GVTIDDTL:{”GVTID_TY_CD:“NIC”,“其他政府ID_TY_TX:“国家身份证”,“GVTID:“ID”,“GVT_ISS_ST_CD:“NY”,“GVT_ISS_CNTRY_CD:“840”,“GVTID_ISS_DT:“2010-02-01”,“GVTID_XPRN_DT:“2019-02-11”);JSONObject obj=新的JSONObject(“{”GVTIDDTL“:{”GVTID_TY_CD“:”NIC“,”其他政府ID_TY_TX“:”国家身份证“,”GVTID“:”ID“,”GVT_ISS_ST_CD“:”NY“,”GVT_ISS_CNTRY_CD“:”840“,”GVTID_ISS_DT“:”2010-02-01“,”GVTID_XPRN_DT“:”2019-02-11”);在java{“gVTIDTL”:“GVTID_TY_CD”:“NIC”、“其他政府ID_TY_TX”:“国家身份证”、“GVTID”:“ID”、“GVT_ISS_CD”:“NY”、“GVTID_ISS_CNTRY_CD”:“840”、“GVTID_ISS_DT”:“2010-02-01”、“GVTID_XPRN_DT”:“2019-02-11”}
GVTID_ISS_DT中有一些奇怪的空白:‌​"2010-02-01
在您最后一条收支平衡的评论中,请修复它。