gpt4 book ai didi

java - Golang/Java 无法从中间件中解码 JSON

转载 作者:IT王子 更新时间:2023-10-29 02:33:08 30 4
gpt4 key购买 nike

我正在为 GoLang 应用程序 ( http://hoverfly.io/ ) 编写中间件,但遇到了一些问题。

这个概念很简单。 Golang 将 JSON 输入传递到我的 Java 中间件,然后我的中间件将修改后的 json 输出返回到 Golang 应用程序。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import org.json.JSONObject;

public class mid
{

static String payload ="";
public static void main (String[] args) throws Exception
{
try {
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);


payload = scanner.nextLine();


JSONObject obj = new JSONObject(payload);


JSONObject response = obj.getJSONObject("response");

response.remove("status");

response.put("status", "500");



String newjson = obj.toString();


write (newjson);

System.out.print(obj);


} catch (Exception e) {
e.printStackTrace();
}



}
}

然后我运行程序:

./hoverfly -middleware "java -jar mid.jar"

我程序的 JSON 输入是这样的:

{"response":{"status":200,"body":"\u003c?xml version=\"1.0\"?\u003e\u003cpathList xmlns:xlink=\"http://www.w3.org/1999/xlink\"\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/0/\"\u003e0\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/1/\"\u003e1\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/3/\"\u003e3\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/4/\"\u003e4\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/5/\"\u003e5\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/6/\"\u003e6\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/7/\"\u003e7\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/8/\"\u003e8\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/9/\"\u003e9\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/10/\"\u003e10\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/11/\"\u003e11\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/12/\"\u003e12\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/13/\"\u003e13\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/14/\"\u003e14\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/15/\"\u003e15\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/16/\"\u003e16\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/17/\"\u003e17\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/18/\"\u003e18\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/19/\"\u003e19\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/20/\"\u003e20\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/21/\"\u003e21\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/22/\"\u003e22\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/23/\"\u003e23\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/25/\"\u003e25\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/26/\"\u003e26\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/27/\"\u003e27\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/28/\"\u003e28\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/29/\"\u003e29\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/30/\"\u003e30\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/31/\"\u003e31\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/32/\"\u003e32\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/33/\"\u003e33\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/34/\"\u003e34\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/35/\"\u003e35\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/36/\"\u003e36\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/37/\"\u003e37\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/38/\"\u003e38\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/39/\"\u003e39\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/40/\"\u003e40\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/41/\"\u003e41\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/42/\"\u003e42\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/43/\"\u003e43\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/44/\"\u003e44\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/45/\"\u003e45\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/46/\"\u003e46\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/47/\"\u003e47\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/48/\"\u003e48\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/49/\"\u003e49\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/50/\"\u003e50\u003c/path\u003e\n    \u003cpath xlink:href=\"http://www.testapi.com/endpoint/path/5555/\"\u003e5555\u003c/path\u003e\n\u003c/pathList\u003e","encodedBody":false,"headers":{"Content-Length":["4580"],"Content-Type":["application/xml"],"Date":["Fri, 02 Sep 2016 11:31:17 GMT"],"Hoverfly":["Was-Here"],"Server":["Apache-Coyote/1.1"]}},"request":{"requestType":"recording","path":"/endpoint/path/","method":"GET","destination":"www.testapi.com","scheme":"http","query":"","body":"","headers":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate"],"Accept-Language":["en-US,sv-SE;q=0.8,sv;q=0.5,en;q=0.3"],"Connection":["keep-alive"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:47.0) Gecko/20100101 Firefox/47.0"]}}}

然后发送到 hoverfly 的输出是这样的:

{"response":{"headers":{"Hoverfly":["Was-Here"],"Date":["Fri, 02 Sep 2016 11:31:17 GMT"],"Content-Length":["4580"],"Content-Type":["application/xml"],"Server":["Apache-Coyote/1.1"]},"body":"<?xml version=\"1.0\"?><endpointList xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n    <endpoint xlink:href=\"http://testapi/path/endpoint/0/\">0<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/1/\">1<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/3/\">3<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/4/\">4<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/5/\">5<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/6/\">6<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/7/\">7<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/8/\">8<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/9/\">9<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/10/\">10<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/11/\">11<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/12/\">12<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/13/\">13<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/14/\">14<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/15/\">15<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/16/\">16<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/17/\">17<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/18/\">18<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/19/\">19<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/20/\">20<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/21/\">21<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/22/\">22<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/23/\">23<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/25/\">25<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/26/\">26<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/27/\">27<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/28/\">28<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/29/\">29<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/30/\">30<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/31/\">31<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/32/\">32<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/33/\">33<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/34/\">34<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/35/\">35<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/36/\">36<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/37/\">37<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/38/\">38<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/39/\">39<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/40/\">40<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/41/\">41<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/42/\">42<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/43/\">43<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/44/\">44<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/45/\">45<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/46/\">46<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/47/\">47<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/48/\">48<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/49/\">49<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/50/\">50<\/endpoint>\n    <endpoint xlink:href=\"http://testapi/path/endpoint/5555/\">5555<\/endpoint>\n<\/endpointList>","status":"500","encodedBody":false},"request":{"headers":{"Accept-Language":["en-US,sv-SE;q=0.8,sv;q=0.5,en;q=0.3"],"Accept-Encoding":["gzip, deflate"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:47.0) Gecko/20100101 Firefox/47.0"],"Connection":["keep-alive"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"]},"body":"","scheme":"http","query":"","path":"/path/endpoint/","method":"GET","requestType":"recording","destination":"testapi"}}

但是,当我运行它时,出现错误:

"error":"json: cannot unmarshal string into Go value of type int","level":"error","msg":"Failed to unmarshal JSON 

Go 是否需要某种特殊的 JSON 格式或者可能是什么问题?

感谢所有帮助。

最佳答案

错误消息说无法将字符串解码为 int 类型的 Go 值。这意味着当 Go 期望它是 int 时,您发送的是 string

Go 代码正在尝试使用 this 解码 JSON定义

解决方案:

"status":"500" 应作为 "status":500

发送

尝试

 response.put("status", 500);

关于java - Golang/Java 无法从中间件中解码 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39319481/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com