You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot如何解析pandas导出的JSON并映射为Ticker实体对象

问题根因

你拿到的JSON是pandas默认orient='columns'参数输出的列优先结构,格式为「字段名 -> {索引: 对应行值}」的映射,本身不是JSON数组,强行转JSONArray必然报错,随意裁剪字符串、手动加方括号的操作也不符合JSON规范,完全没有必要。

最优解决方案(改FastAPI侧输出,后续解析零额外成本)

pandas输出JSON时指定orient参数为records即可直接输出行优先的数组格式,FastAPI侧代码调整为:

# 假设df是你的pandas DataFrame对象
return df.to_json(orient='records')

调整后输出的JSON格式如下,完全匹配你需要的Ticker结构:

[{"Ticker":"GGB","Price":4.38,"total_multiplier":1},{"Ticker":"CRD-B","Price":7.93,"total_multiplier":1},...]

Spring Boot侧直接用WebClient自带的Jackson反序列化即可,无需手动解析JSON:

import java.util.List;

// 直接反序列化为Ticker对象集合
List<Ticker> tickers = Objects.requireNonNull(fastAPIService.localApiClient().get()
                .uri("/finmine/")
                .retrieve()
                .bodyToFlux(Ticker.class)
                .collectList()
                .block());

注意给你的Ticker类补充无参构造方法、对应字段的getter/setter,也可以直接加Lombok的@Data注解简化代码。

兼容方案(不改FastAPI,直接解析现有JSON)

如果无法调整上游接口输出,直接按现有结构手动解析即可,不要裁剪原始返回的JSON字符串:

import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;

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

JSONObject root = new JSONObject(rawJson);
JSONObject tickerMap = root.getJSONObject("Ticker");
JSONObject priceMap = root.getJSONObject("Price");
JSONObject multiplierMap = root.getJSONObject("total_multiplier");

List<Ticker> tickerList = new ArrayList<>();
int size = tickerMap.keySet().size();
for (int i = 0; i < size; i++) {
    String idx = String.valueOf(i);
    Ticker ticker = new Ticker();
    ticker.setTicker(tickerMap.getString(idx));
    ticker.setPrice(priceMap.getDouble(idx));
    ticker.setTotal_multiplier(multiplierMap.getDouble(idx));
    tickerList.add(ticker);
}
注意事项

如果返回的JSON字符串外层带多余双引号,说明FastAPI接口返回的Content-Type不正确,应调整为application/json类型,不要手动裁剪字符串处理转义。

内容的提问来源于stack exchange,提问作者shelby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:15:08