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

时间:2014-03-12 11:30:59

标签: java json string string-parsing

我从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"));
}

如何将数据库中的字符串转换为Java中的有效字符串?

我想这应该给我答案。

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

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

2 个答案:

答案 0 :(得分:2)

解析此JSON

{
    "MyDetails": {
        "Type1": "A",
        "Type2": "B",
        "Type3": "C",
        "Type4": "D",
        "Type5": "E",
        "Type6": "F",
        "Date1": "2000-02-11"
    }
}
你会用这样的东西:

JSONObject root = ...;
JSONObject details = (JSONObject) root.get("MyDetails");
String type1 = (String) details.get("Type1");
String type2 = (String) details.get("Type2");
// and so on

答案 1 :(得分:0)

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

JSONObject ob = obj.getJSONObject("MYDETAILS");
System.out.println(ob.getString("CLASS"));

如果MyDetails实际上是一个数组,那么JSON将使用这样的方括号:

{"MyDetails": [
      {  "CLASS": "A" },
      {  "CLASS": "B"},      
    ]}

在这种情况下,您的代码将是:

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"));
}

希望你现在可以看到差异。