我有一个返回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;
}
请告诉我这是返回JSON数组的正确方法,如果正确请在javascript上迭代时告诉
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))
}
为什么我在第一次迭代中得到了undefine .. 谢谢
答案 0 :(得分:0)
我建议你返回一个对应于java方法中字符串化的JSON数组的字符串。
你的json可能看起来像那样:
{"qbCondition":"myCondition", "data":[
{"outputFields" : "myOutputFields1", "fieldId" : "fieldId1" },
{"outputFields" : "myOutputFields2", "fieldId" : "fieldId"}
]}
然后在javascript部分,您可以使用 JSON.parse(object)检索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);
}