从字符串创建JSONObject

时间:2017-08-22 12:51:57

标签: java arrays json

我知道这个问题已经被问到了,我尝试了所有的解决方案,但对我来说没有任何作用。 所以我有这个json语法字符串:

{
   tasks: [
      {
         blockId: "startpoint1",
         properties: [ "aaaa"  ]
      },
      {
         blockId: "endpoint2",
         properties: [ "tttttt" ]
      } 
   ]
}

我试图通过这种方式从这个String创建一个JSONObject

JSONParser parser=new JSONParser();
try {
    JSONObject json=(JSONObject) parser.parse(req.getParameter(WORKFLOW_DEFINITION_PROPERTIES));
    } catch (ParseException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

现在我想在tasks数组上循环以获取每个元素blockId。我试图通过将JSONObject转换为JSONArray来实现此目的:

JSONArray tasks=(JSONArray) json.get("tasks");

但我仍然可以循环tasks以获取blockId's。 你能告诉我我做错了什么或如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

您必须使用getJsonArray方法而不是get方法来检索任务数组:

JSONArray tasks= json.getJsonArray("tasks");

答案 1 :(得分:1)

只需更改创建JSONObject的方式。

JSONObject jObject = new JSONObject(jsonStr);
//later you can access to your array 
JSONArray tasks=(JSONArray) jObject.get("tasks");

答案 2 :(得分:-1)

你需要这个吗?

    var arrayVariable=[
      {
         blockId: "startpoint1",
         properties: [ "aaaa"  ]
      },
      {
         blockId: "endpoint2",
         properties: [ "tttttt" ]
      } 
   ]

    arrayVariable.map(function(d){
       return d.blockId
       });

Out put你将得到你所有的阻止

     ["startpoint1", "endpoint2"]