微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在发送到我的 JAVA 程序之前,我将 JSON 字符串化多少次

如何解决在发送到我的 JAVA 程序之前,我将 JSON 字符串化多少次

我正在调用一个 Java 程序,该程序是我使用 Google OR Tools 编写的用于解决 VRP 的问题,并且我正在使用 child-process 从我的 Node JS 文件调用该程序。目前我不得不将我的数据字符串化三次以获得预期的输出,昨天我只需要在 Node 和 Java 中使用相同的代码执行两次。我担心的是,如果我明天必须将数据字符串化四次会怎样。有没有更好的方法来字符串化每次都一致的数据,或者我做错了什么?

我有多个 JAR 文件,所有这些文件在字符串化一次或两次时都返回相同的响应,但在字符串化三次时工作正常。

节点JS代码:-

const childPorcess = exec('java -jar <PATH_TO_JAR_FILE> ' + JSON.stringify(JSON.stringify(JSON.stringify(data))),function(err,stdout,stderr) {
  if (err) {
    console.log(err)
  }
  console.log(JSON.parse(stdout))
})

我如何在 Java 中解析 :-

JSONObject data = (JSONObject) new JSONParser().parse(args[0]);

我的 JSON 对象:-

{
  "locations": [
    [30.795288,76.750204],[-30.795061,76.811813],[30.746093,76.844772],[30.783321,76.952143],[31.102846,77.021502],[32.154861,76.138451],[31.083183,76.516518],[30.147566,76.061848],[31.866464,77.586482],[32.286318,78.988468]
  ],"demands": [
    0,1,3,6,8,1
  ],"vehicleCapacities" : [
    40,40
  ],"vehicleNumber" : 2,"depot"         : 0
}

预期的反应:-

"droppednodes": [],"Vehicle 2": [
            0,1
        ],"Vehicle 1": [
            0,7,2,4,9,5
        ],"Total distance": 129

当我字符串化一次或两次时收到错误

Exception in thread "main" Unexpected character (l) at position 1.

提前致谢!

编辑: 在与几个人、评论和一些专业人士讨论过这个问题后,问题似乎是由操作系统引起的(我使用的是 Windows)。在 mac OS 中使用它后,它在做了一些小的调整后工作。我们现在使用下面的方式来执行jar文件

response.data = await exec(`java -jar <PATH_TO_JAR> '${JSON.stringify(requestBody)}'`);

这仍然只适用于 Mac OS,我们还没有在 Linux 上检查过它,但对于 Windows,我仍然需要对其进行三次字符串化。

感谢大家评论区的支持

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。