[英]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.