我使用gson来获取parese json数据。但我有一些问题这里是我的json url数据https://api.kcg.gov.tw/api/service/get/2c1d9959-d038-4918-bae3-409680f8193a
您可以看到json数据具有结构。
首先是我代码
package iii_project;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.net.URL;
import java.util.Arrays;
import java.util.Map;
import java.util.ArrayList;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class GsonFetchNetworkJson2 {
public class ItemType {
int seq;
String 資料年度;
String 統計項目;
String 稅目別;
String 資料單位;
String 值;
// public String toString() {
// return Arrays.toString(seq);
// }
}
public class Item {
String isImage;
String success;
String id;
ItemType[] data;
@Override
public String toString() {
return "Item [isImage=" + isImage + ", success=" + success + ", data=" + Arrays.toString(data) + "]";
}
}
public static void main(String[] ignored) throws Exception {
// Type listType = new TypeToken<List<Item>>() {}.getType();
URL url = new URL("https://api.kcg.gov.tw/api/service/get/2c1d9959-d038-4918-bae3-409680f8193a");
InputStreamReader reader = new InputStreamReader(url.openStream());
Item dto = new Gson().fromJson(reader, Item.class);
System.out.println(dto);
// System.out.println(dto.isImage);
// System.out.println(dto.id);
// System.out.println(dto.success);
// System.out.println(dto.types);
// System.out.println(dto.data.toString());
// System.out.println(dto.toString());
// System.out.println(Arrays.toString(dto.date));
// Detail abd = new Gson().fromJson(reader, Detail.class);
// System.out.println(Arrays.toString(abd.值));
// System.out.println(abd.資料單位);
// System.out.println(Arrays.toString(dto.data));
}
}
但结果
System.out.println(dto);
我已经覆盖它,但仍然无法工作x1c 0d1x
我需要这样的数据:
这就是答案!!!
package iii_project;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.net.URL;
import java.util.Arrays;
import java.util.Map;
import java.util.ArrayList;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class GsonFetchNetworkJson2 {
public class ItemType {
private int seq;
private String 資料年度;
private String 統計項目;
private String 稅目別;
private String 資料單位;
private String 值;
//getter and setter
@Override
public String toString() {
return "ItemType [seq=" + seq + ", 資料年度=" + 資料年度 + ", 統計項目=" + 統計項目 + ", 稅目別=" + 稅目別 + ", 資料單位=" + 資料單位
+ ", 值=" + 值 + "]";
}
}
public class Item {
String isImage;
String success;
String id;
ItemType[] data;
@Override
public String toString() {
return "Item [isImage=" + isImage + ", success=" + success + ", id=" + id + ", data="
+ Arrays.toString(data) + "]";
}
}
public static void main(String[] ignored) throws Exception {
// Type listType = new TypeToken<List<Item>>() {}.getType();
URL url = new URL("https://api.kcg.gov.tw/api/service/get/2c1d9959-d038-4918-bae3-409680f8193a");
InputStreamReader reader = new InputStreamReader(url.openStream());
Item dto = new Gson().fromJson(reader, Item.class);
// System.out.println(dto);
// System.out.println(Arrays.toString(dto.data));
System.out.println(dto.isImage);
System.out.println(dto);
// for(ItemType element : dto.data) {
// System.out.println(element);
// }
// System.out.println(dto.data);
// System.out.println(dto.id);
// System.out.println(dto.success);
// System.out.println(dto.types);
// System.out.println(dto.data.toString());
// System.out.println(dto.toString());
// System.out.println(Arrays.toString(dto.date));
// Detail abd = new Gson().fromJson(reader, Detail.class);
// System.out.println(Arrays.toString(abd.值));
// System.out.println(abd.資料單位);
// System.out.println(Arrays.toString(dto.data));
}
}
3条答案
按热度按时间qnyhuwrf1#
您的dto.data是数组,因此您的当前输出是该数组的地址。
请查看以下内容以了解更多详细信息:What's the simplest way to print a Java array?
smtd7mpg2#
您需要覆盖Detail类中的toString函数,否则它只会打印出对象的地址。
w41d8nur3#
但仍然不能工作
它的工作原理与您编写的完全一样!
我想要这样的数据(* 显示一些JSON对象的图像 *)
您需要在toString函数中 * 显式写入缩进 *,然后
比如说
而且ItemType类仍然需要它自己的toString...
如果您真的只想打印缩进的JSON而不需要太多代码,那么就不要尝试打印Item类
Pretty-Print JSON in Java