【问题标题】:How to convert a List<MyEntity> myEntities = Arrays.asList(/** MyEntity[] **/); to JSON data and send via Post to Node如何转换 List<MyEntity> myEntities = Arrays.asList(/** MyEntity[] **/);到 JSON 数据并通过 Post 发送到 Node
【发布时间】:2019-02-26 18:21:07
【问题描述】:

我有一个从数据库中提取的自定义对象的通用列表:

List<MyEntity> myEntities = Arrays.asList(/** MyEntity[] **/);  

我尝试将其转换为 JSON 并发送到 Node 正在侦听的服务器,但它失败了。

转换为 JSON 的列表如下所示:

[
  {
    "_id": 0,
    "_myEntityAccessPermission": 0,
    "_myEntityContainerGUID": -1,
    "_myEntityGUID": 119,
    "_myEntityOwnerGUID": -1,
    "_myEntitySiteGUID": -1,
    "_myEntitySubType": "my_user_entity",
    "_myEntityType": "my_user_entity",
    "_timeCreated": "Thu Aug 16 08:56:02 2018\n",
    "_timeUpdated": "Thu Aug 16 08:56:02 2018\n",
    "myUserEntity": {
      "_email": "TryMyilo@Yahoo.com",
      "_fullNames": "Oliver ",
      "_sessionCode": 0,
      "_id": 0,
      "_myEntityAccessPermission": -1,
      "_myEntityContainerGUID": -1,
      "_myEntityGUID": -1,
      "_myEntityOwnerGUID": -1,
      "_myEntitySiteGUID": -1
    }
  },
  {
    "_id": 0,
    "_myEntityAccessPermission": 0,
    "_myEntityContainerGUID": -1,
    "_myEntityGUID": 120,
    "_myEntityOwnerGUID": -1,
    "_myEntitySiteGUID": -1,
    "_myEntitySubType": "my_user_entity",
    "_myEntityType": "my_user_entity",
    "_timeCreated": "Thu Aug 16 11:44:24 2018\n",
    "_timeUpdated": "Thu Aug 16 11:44:24 2018\n",
    "myUserEntity": {
      "_email": "Eddy",
      "_fullNames": "Eddy Koma Myilo Oliver",
      "_sessionCode": 0,
      "_id": 0,
      "_myEntityAccessPermission": -1,
      "_myEntityContainerGUID": -1,
      "_myEntityGUID": -1,
      "_myEntityOwnerGUID": -1,
      "_myEntitySiteGUID": -1
    }
  },
  {
    "_id": 0,
    "_myEntityAccessPermission": 0,
    "_myEntityContainerGUID": -1,
    "_myEntityGUID": 121,
    "_myEntityOwnerGUID": -1,
    "_myEntitySiteGUID": -1,
    "_myEntitySubType": "my_user_entity",
    "_myEntityType": "my_user_entity",
    "_timeCreated": "Thu Aug 16 11:45:18 2018\n",
    "_timeUpdated": "Thu Aug 16 11:45:18 2018\n",
    "myUserEntity": {
      "_email": "Kim",
      "_fullNames": "Kim",
      "_sessionCode": 0,
      "_id": 0,
      "_myEntityAccessPermission": -1,
      "_myEntityContainerGUID": -1,
      "_myEntityGUID": -1,
      "_myEntityOwnerGUID": -1,
      "_myEntitySiteGUID": -1
    }
  },
  {
    "_id": 0,
    "_myEntityAccessPermission": 0,
    "_myEntityContainerGUID": -1,
    "_myEntityGUID": 122,
    "_myEntityOwnerGUID": -1,
    "_myEntitySiteGUID": -1,
    "_myEntitySubType": "my_user_entity",
    "_myEntityType": "my_user_entity",
    "_timeCreated": "Thu Aug 16 15:40:05 2018\n",
    "_timeUpdated": "Thu Aug 16 15:40:05 2018\n",
    "myUserEntity": {
      "_email": "Fam",
      "_fullNames": "Eddy Oliver Maurice Esther Ann George Paul ",
      "_sessionCode": 0,
      "_id": 0,
      "_myEntityAccessPermission": -1,
      "_myEntityContainerGUID": -1,
      "_myEntityGUID": -1,
      "_myEntityOwnerGUID": -1,
      "_myEntitySiteGUID": -1
    }
  },
  {
    "_id": 0,
    "_myEntityAccessPermission": 0,
    "_myEntityContainerGUID": -1,
    "_myEntityGUID": 123,
    "_myEntityOwnerGUID": -1,
    "_myEntitySiteGUID": -1,
    "_myEntitySubType": "my_user_entity",
    "_myEntityType": "my_user_entity",
    "_timeCreated": "Fri Aug 17 02:20:25 2018\n",
    "_timeUpdated": "Fri Aug 17 02:20:25 2018\n",
    "myUserEntity": {
      "_email": "Dan",
      "_fullNames": "Dan ",
      "_sessionCode": 0,
      "_id": 0,
      "_myEntityAccessPermission": -1,
      "_myEntityContainerGUID": -1,
      "_myEntityGUID": -1,
      "_myEntityOwnerGUID": -1,
      "_myEntitySiteGUID": -1
    }
  }
] 

这是我正在尝试的方法

  private void sendPost() {
    String postURL = "http://192.168.100.11:3000/sound";

    RequestQueue queue = Volley.newRequestQueue(mContext);

    JSONArray array=new JSONArray();

    List<MyEntity> myEntities = Arrays.asList(new MyPersLibRead().myPersGetALLMyEntityUnSyched());

    for (MyEntity myEntity : myEntities) {
        Gson gson = new Gson();
        String json = gson.toJson(myEntity);

        try {
            array.put(new JSONObject(json));
        } catch (JSONException e) {
            e.printStackTrace();
        }

        Log.v("MyApp", json);
    }

    JSONObject jsonObject = new JSONObject();
    try {
        jsonObject.put("filter",array);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    Log.v("MyApp",">>>>>>>>> " +  array.toString());

    JsonObjectRequest jobReq = new JsonObjectRequest(Request.Method.POST, postURL, jsonObject,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject jsonObject) {

                    Log.v("MyApp", jsonObject.toString());

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError volleyError) {

                    Log.v("MyApp", "ERR >>>");

                }
            });

    queue.add(jobReq);
}

在节点端:

// This responds a POST request
app.post('/sound', function (req, res) {
    console.log("Got a POST request");

    console.log(req);

    res.send(req);
});  

Node抛出的错误:

TypeError: Converting circular structure to JSON
    at JSON.stringify (<anonymous>)
    at stringify (/var/www/html/node/my_node_pers_remote/node_modules/express/lib/response.js:1119:12)
    at ServerResponse.json (/var/www/html/node/my_node_pers_remote/node_modules/express/lib/response.js:260:14)
    at ServerResponse.send (/var/www/html/node/my_node_pers_remote/node_modules/express/lib/response.js:158:21)
    at /var/www/html/node/my_node_pers_remote/app.js:39:9
    at Layer.handle [as handle_request] (/var/www/html/node/my_node_pers_remote/node_modules/express/lib/router/layer.js:95:5)
    at next (/var/www/html/node/my_node_pers_remote/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/var/www/html/node/my_node_pers_remote/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/var/www/html/node/my_node_pers_remote/node_modules/express/lib/router/layer.js:95:5)
    at /var/www/html/node/my_node_pers_remote/node_modules/express/lib/router/index.js:281:22

如何通过 JSON 成功将此数据发送到 Node?​​p>

【问题讨论】:

  • 问题似乎出在 Node 端,而不是 Java 端。我没有 Node 方面的专业知识来告诉您应该 做什么,但我不希望将整个请求对象作为响应发送是适当的。也许您想提取请求正文(即消息有效负载)并回显 that,但我认为这只是整个请求对象的一部分。

标签: javascript java android json node.js


【解决方案1】:

只需使用 Gson。这将帮助您将列表转换为 Json 字符串

Gson gson = new Gson();
 // convert your list to json
 String jsonCartList = gson.toJson(cartList);
 // print your generated json
 System.out.println("jsonCartList: " + jsonCartList);

【讨论】:

  • OP 已经成功地将他的列表转换为 JSON,或者看起来是这样。他在问题中提出了结果。如果“仅使用 GSON”实际上是解决问题的方法,那么通过解释预期会产生什么差异和/或 OP 已经获得的 JSON 有什么问题,这个答案会得到很大改善。
  • 感谢您的回答@alex。如何迭代发布请求并获取 JSON 对象数组中的各个 JSON 对象?那是在节点端。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多