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

虽然

在 Java 项目中,我使用 WebSocket 来获取订阅,我从 socket as 得到了许多不同的响应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...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章