Json文件中获取需要的信息
代码如下:
1 | import javax.json.*; |
下面是代码解释:
这段代码是一个Java程序,用于解析一个包含银行记录的JSON字符串并对其进行处理和格式化输出。下面是每一行代码的解释:
package jsontest;:声明了一个名为jsontest的包,用于组织和管理相关的类。
import javax.json.*;:导入了javax.json包,其中包含用于处理JSON的类和接口。
import java.io.StringReader;:导入了java.io包中的StringReader类,用于读取字符串。
import java.text.DecimalFormat;:导入了java.text包中的DecimalFormat类,用于格式化数字。
public class JsonParsingExample {:定义了一个名为JsonParsingExample的公共类,表示这个Java程序的入口点。
public static void main(String[] args) {:定义了程序的主方法,从这里开始执行程序。
String json = “…”:定义了一个包含JSON数据的字符串变量json,这个字符串表示一个包含银行记录的JSON对象。
try (JsonReader jsonReader = Json.createReader(new StringReader(json))) {:创建了一个JsonReader对象,用于从JSON字符串中读取数据。使用try-with-resources语句,确保在代码块结束时关闭JsonReader。
JsonObject jsonObject = jsonReader.readObject();:读取JSON字符串并将其转换为JsonObject对象,表示整个JSON对象。
JsonArray bankRecords = jsonObject.getJsonArray(“bankRecords”);:从JsonObject中获取名为”bankRecords”的JsonArray对象,表示银行记录的数组。
for (JsonValue recordValue : bankRecords) {:对bankRecords中的每个银行记录进行迭代。
JsonObject record = (JsonObject) recordValue;:将JsonValue转换为JsonObject,表示单个银行记录。
int loanId = record.getInt(“loanId”);:从银行记录中获取名为”loanId”的整数值。
int vob = record.getInt(“vob”);:从银行记录中获取名为”vob”的整数值。
long payrollDate = record.getJsonNumber(“payrollDate”).longValue();:从银行记录中获取名为”payrollDate”的JsonNumber对象,并将其转换为长整型值。
int payrollType = record.getInt(“payrollType”);:从银行记录中获取名为”payrollType”的整数值。
JsonValue amountValue = record.get(“amount”);:从银行记录中获取名为”amount”的JsonValue对象。
double amount;:定义一个double类型的变量amount,用于存储金额值。
23-30. 在这些行中,根据amountValue的类型,将其转换为double类型的金额值。如果amountValue的值类型是数字类型(JsonValue.ValueType.NUMBER),则直接将其转换为double类型;否则,将其解析为字符串,然后将字符串转换为double类型。
JsonValue balanceValue = record.get(“balance”);:从银行记录中获取名为”balance”的JsonValue对象。
double balance;:定义一个double类型的变量balance,用于存储余额值。
34-41. 在这些行中,根据balanceValue的类型,将其转换为double类型的余额值。如果balanceValue的值类型是数字类型(JsonValue.ValueType.NUMBER),则直接将其转换为double类型;否则,将其解析为字符串,然后将字符串转换为double类型。
DecimalFormat df = new DecimalFormat(“#.00”);:创建一个DecimalFormat对象df,用于将数字格式化为指定的格式,保留两位小数。
String formattedBalance = df.format(balance);:使用DecimalFormat对象df对余额值进行格式化,得到格式化后的字符串形式。
String result = loanId + “, “ + vob + “, “ + payrollDate + “, “ + payrollType + “, “ + amount + “, “ + formattedBalance;:将银行记录中的各个字段值拼接成一个字符串result,以便输出。
System.out.println(result);:将字符串result打印到控制台,显示银行记录的各个字段值。
50-56. 在try块的末尾,捕获任何异常(Exception)并打印堆栈跟踪信息。
通过这段代码,可以解析JSON字符串中的银行记录,提取各个字段的值,并对金额和余额进行格式化后输出。