Java 通过转义字符解析JSON字符串
我从DB收到以下字符串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字符串的语法,但是上面的格式给了我一个错误字符串,我无法用它来构造字
{
"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
在您最后一条收支平衡的评论中,请修复它。