如何从API返回的字符串中汇总Amount字段数值?转对象失败求助
搞定API返回字符串的Amount汇总问题
嘿,我来帮你解决这个汇总Amount的难题!你之前转对象、JSON或者List失败,大概率是没找对正确的解析姿势,或者字符串格式有小问题,咱们一步步来:
先确认你的字符串格式是合法的
你给的示例字符串:
[{"username":"8000","Amount":"33","gsName":{"aa":"bb","dd":"cc"}}, {"username":"8000","Amount":"21","gsName":{"aa":"bb","dd":"cc"}}]
这个是标准的JSON数组格式,只要里面的引号都是英文双引号(不是中文的),就没问题。如果之前转换失败,先检查下是不是字符串里混了全角字符或者转义错误。
用Python快速实现汇总(简单易上手)
Python处理JSON超方便,直接用内置的json模块就行,试试这段代码:
import json # 把API返回的字符串粘这里 api_str = '[{"username":"8000","Amount":"33","gsName":{"aa":"bb","dd":"cc"}}, {"username":"8000","Amount":"21","gsName":{"aa":"bb","dd":"cc"}}]' try: # 把字符串转成Python列表 data = json.loads(api_str) # 遍历每个元素,把Amount转成整数后求和 total = sum(int(item['Amount']) for item in data) # 输出你要的两种格式 print(f'amount {total}') # 结果:amount 54 print(total) # 结果:54 except json.JSONDecodeError as e: print(f"解析失败啦,可能是格式问题:{e}")
如果用Java的话也能搞定
要是你用Java,推荐用Gson库来解析,代码如下:
import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.util.List; import java.util.Map; public class SumAmount { public static void main(String[] args) { String apiResponse = "[{\"username\":\"8000\",\"Amount\":\"33\",\"gsName\":{\"aa\":\"bb\",\"dd\":\"cc\"}}, {\"username\":\"8000\",\"Amount\":\"21\",\"gsName\":{\"aa\":\"bb\",\"dd\":\"cc\"}}]"; Gson gson = new Gson(); // 把字符串转成List<Map> List<Map<String, Object>> dataList = gson.fromJson(apiResponse, new TypeToken<List<Map<String, Object>>>(){}.getType()); int totalAmount = 0; for (Map<String, Object> item : dataList) { // 把Amount转成整数累加 totalAmount += Integer.parseInt(item.get("Amount").toString()); } System.out.println("amount " + totalAmount); // 输出:amount 54 } }
为啥之前转换失败?给你排查方向
- 字符串里有中文引号或者全角空格,导致解析器认不出来
- API返回的字符串末尾多了个逗号,或者有缺失的引号
- 编程语言里没有正确处理转义字符(比如字符串里的双引号被转义成
\",但你没注意)
核心逻辑其实很简单:先把合法的JSON字符串转成可遍历的集合,然后挨个取出Amount转成数值,最后加起来就行啦!
内容的提问来源于stack exchange,提问作者si gong
相关产品推荐
相关产品推荐

