2016-07-04 18 views
2

私はここにJSON配列を返すメソッドを持っていますが、私の方法JSON配列を返す正しい方法は何ですか?

public net.sf.json.JSONArray getquery(QueryBuilderRequestHelper helper) { 
    //logger.log(Level.INFO, " ############### getquery ############### "); 
     net.sf.json.JSONObject jObject = new net.sf.json.JSONObject(); 
     net.sf.json.JSONArray jArray = new net.sf.json.JSONArray(); 
     net.sf.json.JSONObject tempJsonObject = null; 
     QueryBuilderJpaController builderJpaController = new QueryBuilderJpaController(); 
     try { 
      tempJsonObject =new net.sf.json.JSONObject(); 
      QueryBuilder builder=builderJpaController.findByqueryId(Integer.parseInt(helper.getQueryId())); 
      String outputFields=builder.getOutputFields(); 
      String qbCondition=builder.getQbCondition(); 
      tempJsonObject.put("qbCondition", qbCondition = qbCondition.replaceAll("^\"|\"$", "")); 

      jArray.add(tempJsonObject); 
      List<String> list = new ArrayList<String>(); 
      list = (List<String>) net.sf.json.JSONArray.toCollection(net.sf.json.JSONArray.fromObject(outputFields)); 
      for (String string : list) { 

       tempJsonObject.put("outputFields", string); 
       jArray.add(tempJsonObject); 
      } 
      List<QueryBuilderCondition> tbdAnsList = builderJpaController.getQueryBuilderConditionByQueyId(Integer.valueOf(Integer.parseInt(helper.getQueryId()))); 
     for (QueryBuilderCondition queryBuilderCondition : tbdAnsList) { 

      tempJsonObject.put("fieldId", queryBuilderCondition.getFieldId()); 
      tempJsonObject.put("operator", queryBuilderCondition.getOperator()); 
      tempJsonObject.put("fieldValue", queryBuilderCondition.getFieldValue()); 
      jArray.add(tempJsonObject); 
      } 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     return jArray; 
} 

である私に知らせてください

のようにはJavaScriptでこれを反復しながら、この正しいが、教えてください場合はJSONの配列を返すの正しい方法これです私はその最初の反復時に未定義を得たのはなぜ
success: function(data) { 

     for(var i in data) 
     { 
      var qbCondition = data.qbCondition; 
      console.log("======qbCondition is =="+JSON.stringify(qbCondition)) 
      var outputFields = data[i].outputFields; 
      console.log("======outputFields is =="+JSON.stringify(outputFields)) 
      var fieldId = data[i].fieldId; 
      console.log("======fieldId is =="+JSON.stringify(fieldId)) 
      var operator = data[i].operator; 
      console.log("======operator is =="+JSON.stringify(operator)) 
      var fieldValue = data[i].fieldValue; 
      console.log("======fieldValue is =="+JSON.stringify(fieldValue)) 

     } 

は... はあなた

答えて

0

私はあなたをアドバイスうリターン文字列 correspon にありがとうございましたあなたのJavaメソッドで文字列化されたJSON配列へのダイシング。

あなたのJSONはそのようになります。

{"qbCondition":"myCondition", "data":[ 
    {"outputFields" : "myOutputFields1", "fieldId" : "fieldId1" }, 
    {"outputFields" : "myOutputFields2", "fieldId" : "fieldId"} 
]} 

はその後javascriptの一部に、あなたはJSON.parse(オブジェクト)でJSONオブジェクトを取得することができます。

success: function(response) { 
    var jsonData = JSON.parse(response); 
    var qbCondition = jsonData.qbCondition; 
    console.log("======qbCondition is =="+qbCondition); 

    // get your array and display index 0 
    var myArr = jsonData.data; 
    var outputFields = myArr[0].outputFields; 
    console.log("======outputFields is=="+outputFields); 
} 
関連する問題