簡體   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