gpt4 book ai didi

java - 如何让 Jersey 客户端在根请求实体周围写入 `[` 和 `]`?

转载 作者:行者123 更新时间:2023-11-30 11:14:00 25 4
gpt4 key购买 nike

这个非常简单的请求让我很头疼......

我正在尝试使用 Jersey 客户端将数据POST 到 InfluxDB 中。

他们想要这种格式的数据

[
{
"name": "log_lines",
"columns": ["time", "line"],
"points": [
[1400425947368, "here's some useful log info"]
]
}
]

所以我的实体看起来像这样:

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class InfluxDbStat implements Serializable {
private static final long serialVersionUID = 1L;
@XmlElement
public String name;
@XmlElement
public String[] columns;
@XmlElement
public String[] points;
}

转化为:

{  
"name":"pointcut_performance",
"columns":[
"time",
"pointcut",
"length"
],
"points":[
"1412098229880",
"com.xxx.notes.restapi.NoteTakerController.postNote(ApiNote)",
"105"
]
}

我正在这样调用端点:

influxDbResource.queryParam("u", influxDbUser).queryParam("p", influxDbPassword).queryParam("time_precision", "ms").accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).post(influxDbStat);

如何让它打印方括号作为根?

最佳答案

我会发布我的答案,希望有类似问题的人有一天能从中受益。

首先,我切换到官方的 InfluxDB Java 客户端,它实际上工作得很好。我很高兴使用这个解决方案,但它涉及到对我的项目的另一个依赖,我对此并不特别满意。还有一个 Unresolved 错误,其中毫秒被解释为微秒 ( https://github.com/influxdb/influxdb-java/issues/13 )。有点像派对狂人。

第二种方法有点诡计。 Sotirios Delimanolis 在他的评论中为我提供了线索。首先,将响应对象包装在一个数组中:new InfluxDbStat[]{influxDbStat}; 其次,拧紧 JAXB。我找不到的编码器,Jackson、Jettison、Moxy(遗憾的是,即使是值得信赖的 Eclipse Moxy)都无法生成“正常的”有趣的时髦 JSON。尽管如此,我们并没有失去一切,我们已经将 GSON 作为依赖传递地引入,所以我们决定只创建一个声明的依赖并使用它。所以,只需执行 gson.toJson(new InfluxDbStat[]{influxDbStat}) 就可以了!

我们从我的第一篇文章中发现的另一个错误是 points 变量实际上需要声明为 public int[][] points,因为 InfluxDB 允许您一次提交多行。

无论如何,祝你好运,InfluxDBing 快乐!

关于java - 如何让 Jersey 客户端在根请求实体周围写入 `[` 和 `]`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126814/

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