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

如何将指定JSON转换为Flutter对象?子键rates转换遇阻求助

解决方案:JSON转对象(处理嵌套的rates键)

嘿,我来帮你搞定这个JSON转对象的问题!看起来你主要卡在嵌套的rates子对象转换上,下面我给你几个常用编程语言的具体实现,你可以对照自己的开发场景来用:

先把你的JSON内容贴出来方便参考:

{ 
  "info": "Exchange Rates", 
  "timestamp": "1558080000", 
  "rates": { 
    "USD": "1,536.7", 
    "VND": "6.5693", 
    "PHP": "29.184", 
    "KRW": "128.60", 
    "HKD": "195.77", 
    "BRL": "379.62", 
    "RSD": "14.557", 
    "MYR": "367.94" 
  } 
}

1. JavaScript/TypeScript 实现

在JS里直接用JSON.parse()就能快速转换,TS的话建议定义接口约束类型,避免类型错误:

JavaScript 示例:

const jsonStr = `{"info": "Exchange Rates", "timestamp": "1558080000", "rates": {"USD": "1,536.7", "VND": "6.5693", "PHP": "29.184", "KRW": "128.60", "HKD": "195.77", "BRL": "379.62", "RSD": "14.557", "MYR": "367.94"}}`;

// 直接解析成原生对象
const exchangeData = JSON.parse(jsonStr);

// 访问rates里的属性
console.log(exchangeData.rates.USD); // 输出 "1,536.7"
// 如果需要做数值计算,记得先处理千分位逗号
const usdRate = parseFloat(exchangeData.rates.USD.replace(',', ''));
console.log(usdRate); // 输出 1536.7

TypeScript 示例:

// 定义对应的数据接口
interface ExchangeRates {
  info: string;
  timestamp: string;
  rates: Record<string, string>; // 也可以写成具体的键值对类型,比如{ USD: string; VND: string; ... }
}

const jsonStr = `{"info": "Exchange Rates", "timestamp": "1558080000", "rates": {"USD": "1,536.7", "VND": "6.5693", "PHP": "29.184", "KRW": "128.60", "HKD": "195.77", "BRL": "379.62", "RSD": "14.557", "MYR": "367.94"}}`;

// 类型安全地解析
const exchangeData: ExchangeRates = JSON.parse(jsonStr);

// 访问rates中的数据
console.log(exchangeData.rates.PHP); // 输出 "29.184"

2. Java 实现

Java可以用Jackson或Gson库来转换,这里以Jackson为例:

第一步:定义对应实体类

import com.fasterxml.jackson.annotation.JsonProperty;

public class ExchangeData {
    private String info;
    private String timestamp;
    // 嵌套的Rates对象
    private Rates rates;

    // Getter & Setter 方法
    public String getInfo() { return info; }
    public void setInfo(String info) { this.info = info; }
    public String getTimestamp() { return timestamp; }
    public void setTimestamp(String timestamp) { this.timestamp = timestamp; }
    public Rates getRates() { return rates; }
    public void setRates(Rates rates) { this.rates = rates; }

    // 内部类定义Rates结构
    public static class Rates {
        @JsonProperty("USD")
        private String usd;
        @JsonProperty("VND")
        private String vnd;
        @JsonProperty("PHP")
        private String php;
        @JsonProperty("KRW")
        private String krw;
        @JsonProperty("HKD")
        private String hkd;
        @JsonProperty("BRL")
        private String brl;
        @JsonProperty("RSD")
        private String rsd;
        @JsonProperty("MYR")
        private String myr;

        // 各属性的Getter & Setter 方法
        public String getUsd() { return usd; }
        public void setUsd(String usd) { this.usd = usd; }
        public String getVnd() { return vnd; }
        public void setVnd(String vnd) { this.vnd = vnd; }
        // 其他属性的Getter & Setter 同理
    }
}

第二步:用Jackson解析JSON

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) throws Exception {
        String jsonStr = "{ \"info\": \"Exchange Rates\", \"timestamp\": \"1558080000\", \"rates\": { \"USD\": \"1,536.7\", \"VND\": \"6.5693\", \"PHP\": \"29.184\", \"KRW\": \"128.60\", \"HKD\": \"195.77\", \"BRL\": \"379.62\", \"RSD\": \"14.557\", \"MYR\": \"367.94\" } }";
        
        ObjectMapper objectMapper = new ObjectMapper();
        ExchangeData exchangeData = objectMapper.readValue(jsonStr, ExchangeData.class);
        
        // 访问rates里的USD汇率
        System.out.println(exchangeData.getRates().getUsd()); // 输出 "1,536.7"
    }
}

3. Python 实现

Python用内置的json模块就能轻松处理:

import json

json_str = '''{ 
  "info": "Exchange Rates", 
  "timestamp": "1558080000", 
  "rates": { 
    "USD": "1,536.7", 
    "VND": "6.5693", 
    "PHP": "29.184", 
    "KRW": "128.60", 
    "HKD": "195.77", 
    "BRL": "379.62", 
    "RSD": "14.557", 
    "MYR": "367.94" 
  } 
}'''

# 解析成Python字典(等价于对象)
exchange_data = json.loads(json_str)

# 访问rates中的数据
print(exchange_data['rates']['USD']) # 输出 "1,536.7"
# 转成数值的话处理逗号
usd_rate = float(exchange_data['rates']['USD'].replace(',', ''))
print(usd_rate) # 输出 1536.7

小提示:

注意rates里的汇率值是带千分位逗号的字符串(比如USD的"1,536.7"),如果需要做数值计算,一定要先去掉逗号再转换为数字类型哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:36:16