【问题标题】:how to pass a json array from javascript to java?如何将 json 数组从 javascript 传递给 java?
【发布时间】:2017-05-19 16:14:11
【问题描述】:

我已经阅读了十分之一的类似主题,但无法让我的代码正常工作。 我想知道是否有人可以提供帮助。

我需要的是通过 $http.get 将 json 数组从 javascript 传递到 java。在java方面,我想正确解析它。

我已经尝试了很多与 JSONObject 和 JSONArray 的组合,但都没有成功。

感谢您的帮助。

javascript代码:

        vm.array1 = [];
        for (var i = 0; i < vm.InitArray.length; i++) {
            if (vm.InitArray[i].sel == 'S') {
                var string =  
                    vm.InitArray[i].agencyCode +';'+ 
                    vm.InitArray[i].duoDate+';'+
                    vm.InitArray[i].titleCode;
                vm.array1.push({myArray:string})
            }
        }
        vm.InitArrayJ = JSON.stringify(vm.InitArray);// converting to json array

        $http.get(PltConfig.baseAPIPath + '/v1/callResource', {
            params: {
                    array1: vm.array1
                }
        })
        .success(function (response) {
            ...
        });

java代码:

@Name("CallResource")
@Path("/v1/callResource")
...
@GET
@Produces(MediaType.APPLICATION_JSON + CHARSET_UTF_8)
public ServiceResponse< String > getBalance( @QueryParam("array1") List<String> array1 
        ) throws JSONException 
        {
    JSONObject jObject = new JSONObject(array1);
    JSONArray jsonarray = jObject.getJSONArray("myArray");
    for (int i = 0; i < jsonarray.length(); i++) {
        JSONObject jsonobject = jsonarray.getJSONObject(i);
    }

【问题讨论】:

  • 您遇到的错误是什么?这可能与 array1 是对象列表而不是字符串这一事实有关。

标签: javascript java arrays json


【解决方案1】:

尝试改变

public ServiceResponse< String > getBalance( @QueryParam("array1") List<String> array1 
    ) throws JSONException 

public ServiceResponse< String > getBalance( @QueryParam("array1") List<HashMap<String, Object>> array1 
    ) throws JSONException 

【讨论】:

    【解决方案2】:

    有时你必须明确你的回应在哪里,所以试试这个

    public ServiceResponse< String > getBalance( @QueryParam("array1") [FromBody]List<String> array1 
        ) throws JSONException 
    

    或者

    public ServiceResponse< String > getBalance( @QueryParam("array1") [FromBody]dynamic array1 
        ) throws JSONException 
    

    【讨论】:

      【解决方案3】:

      首先你的行:

      vm.InitArrayJ = JSON.stringify(vm.InitArray);// converting to json array
      

      没有按照您在评论中描述的那样做,即按照 JSON 表示法将 JSON 对象转换为字符串。

      下一步:

         $http.get(PltConfig.baseAPIPath + '/v1/callResource', {
              params: {
                      array1: vm.array1
                  }
          })
      

      您需要对vm.array1 进行字符串化,您无法发送需要使用 stringify 将其转换为字符串的数组对象,而在您这边,您需要将字符串转换为对象。

      不知道您为什么要尝试在查询字符串中发送 JSON 对象,也许您需要考虑使用 POST 而不是使用 POST 方法发送 JSON 对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-24
        • 1970-01-01
        • 2017-11-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多