在发送到我的 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 (将#修改为@)