gpt4 book ai didi

java - 如何将特定的JSONArray转换为JAVA对象?

转载 作者:行者123 更新时间:2023-12-02 02:32:19 27 4
gpt4 key购买 nike

在 Java 项目中,我使用 WebSocket 来获取订阅,并且我从套接字获得了许多不同的响应,如 JSONArray,我需要的响应如下所示:

[
68,
"te",
[
80588348,
1508768162000,
0.01569882,
5700.8
]
]

应该如何查看此响应的 JAVA 对象?如何将其转换为该对象?

[
68, <- Integer
"te", <- String
[
80588348, <- Long
1508768162000, <- Long
0.01569882, <- Double
5700.8 <- Double
]
]

有一个问题,还有其他响应,例如:

{"event":"subscribed","channel":"trades","chanId":68,"symbol":"tBTCUSD","pair":"BTCUSD"}

当我尝试通过 new JSONArray(response) 转换它时,它会抛出 org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1] .

如何获取并转换我需要的字段(第一个响应示例)?

我想要得到这样的东西:

public class Details{
public Long id;
public Long timestamp;
public Double amount;
public Double price;
}

public class Response{
public Integer id;
public String type;
public Details details;
}

最佳答案

请求的解析器​​类:

public class JsonParser {
public static Response toJavaObject(String str) {
String[] fields = str.split(",");
Response res = new Response();
res.setId(Integer.valueOf(fields[0].substring(1)));
res.setType(fields[1].replaceAll("\"", ""));
Details dtl = new Details();
dtl.setId(Long.valueOf(fields[2].substring(1)));
dtl.setTimestamp(Long.valueOf(fields[3]));
dtl.setAmount(Double.valueOf(fields[4]));
dtl.setPrice(Double.valueOf(fields[5].substring(0, fields[5].length() - 2)));
res.setDetails(dtl);

return res;
}
}

class Details {
public Long id;
public Long timestamp;
public Double amount;
public Double price;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Long getTimestamp() {
return timestamp;
}

public void setTimestamp(Long timestamp) {
this.timestamp = timestamp;
}

public Double getAmount() {
return amount;
}

public void setAmount(Double amount) {
this.amount = amount;
}

public Double getPrice() {
return price;
}

public void setPrice(Double price) {
this.price = price;
}
}

class Response {
public Integer id;
public String type;
public Details details;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public Details getDetails() {
return details;
}

public void setDetails(Details details) {
this.details = details;
}
}

要使用这个 JsonParser,

例如在您现在的代码中:

public static void main(String args[]) {
String str = "[68,\"te\",[80588348,1508768162000,0.01569882,5700.8]]";
Response res = JsonParser.toJavaObject(str);
// your logic below...
}

关于java - 如何将特定的JSONArray转换为JAVA对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46907563/

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