繁体   English   中英

Java JSON 字符串到对象

[英]Java JSON String to Objects

我在 Spring 启动应用程序中从 pandas 收到以下格式的 JSON:

{\"Ticker\":{\"0\":\"GGB\",\"1\":\"CRD-B\",\"2\":\"QIWI\",\"3\":\"VIPS\",\"4\":\"PRDO\",\"5\":\"VALE\",\"6\":\"TCS\",\"7\":\"LL\",\"8\":\"ETD\",\"9\":\"PRIM\",\"10\":\"SNDR\",\"11\":\"MDU\",\"12\":\"CMC\",\"13\":\"TX\",\"14\":\"FOXA\",\"15\":\"EBS\",\"16\":\"SAGE\"},\"Price\":{\"0\":4.38,\"1\":7.93,\"2\":8.3,\"3\":10.04,\"4\":10.54,\"5\":11.45,\"6\":12.82,\"7\":17.23,\"8\":24.06,\"9\":25.14,\"10\":25.76,\"11\":28.47,\"12\":35.07,\"13\":38.02,\"14\":38.99,\"15\":40.07,\"16\":40.9},\"total_multiplier\":{\"0\":1,\"1\":1,\"2\":1,\"3\":1,\"4\":2,\"5\":2,\"6\":1,\"7\":1,\"8\":2,\"9\":2,\"10\":2,\"11\":2,\"12\":1,\"13\":1,\"14\":2,\"15\":2,\"16\":2}}

然后我尝试从该字符串中获取数据,但以下

String tickersList =
    Objects.requireNonNull(fastAPIService.localApiClient().get().uri("/finmine/").retrieve().bodyToMono(String.class).block());

tickersList = tickersList.substring(1, tickersList.length() - 1);
JSONObject tickersObject = new JSONObject(tickersList);
JSONArray tickersArray = new JSONArray(tickersObject);
final int n = tickersArray.length();
for (int i = 0; i < n; ++i) {
    final JSONObject ticker = tickersArray.getJSONObject(i);
    System.out.println(ticker.getString("Ticker"));
    System.out.println(ticker.getFloat("total_multiplier"));
}

投掷

org.json.JSONException:缺失值 1 [字符 2 第 1 行]

我从字符串中减去 ",因为 fastapi 客户端将它作为字符串发送给我;我尝试在字符串的开头和结尾添加方括号,但随后它会抛出一个错误,其中在字符 654 处缺少值 ":"

如果我想稍后用它创建以下 class 的对象,我应该如何以正确的方式阅读 JSON?

public class Ticker {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String Ticker;
    private Double Price;
    private Double total_multiplier;
}

首先,您应该使您的 JSON 字符串有效(将反斜杠字符替换为空字符串)。 Further, you can use Jackson lib to parse JSON into object, about Jackson: https://www.baeldung.com/jackson-object-mapper-tutorial

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM