1. 程式人生 > 其它 >gson解析包含不同型別陣列

gson解析包含不同型別陣列

技術標籤:Androidgson陣列

以下方法只是提供參考

  • 當一個list中包含不同型別時,可使用以下方法解析
[
   {"name":"法外狂徒張三","age":33},
   "123",
   123,
   12.3
]
  • 直接上程式碼
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "json";

    /*[
	{"name":"法外狂徒張三","age":33},
	"123",
	123,
	12.3
    ]*/
private static final String strJsonData = "[\n" + "\t{\"name\":\"法外狂徒張三\",\"age\":33},\n" + "\t\"123\",\n" + "\t123,\n" + "\t12.3\n" + "]"
; static class InfoBean { public String name; public int age; @Override public String toString() { return "InfoBean{" + "name='" + name + '\'' + ", age=" + age + '}'
; } } private List<Class> typeList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); typeList.add(InfoBean.class); typeList.add(String.class); typeList.add(Integer.class); typeList.add(Float.class); JsonArray jsonElements = JsonParser.parseString(strJsonData).getAsJsonArray();//獲取JsonArray物件 for (int i = 0; i < jsonElements.size(); i++) { JsonElement jsonElement = jsonElements.get(i); for (int j = 0; j < typeList.size(); j++) { try { Object bean = new Gson().fromJson(jsonElement, typeList.get(i)); if (bean instanceof InfoBean) { Log.i(TAG, "InfoBean.class->" + bean.toString()); } else if (bean instanceof Integer) { Log.i(TAG, "Integer.class->" + bean); } else if (bean instanceof String) { Log.i(TAG, "String.class->" + bean); } else if (bean instanceof Float) { Log.i(TAG, "Float.class->" + bean); } break; } catch (Exception e) { e.printStackTrace(); } } } } }
  • 執行結果:
    在這裡插入圖片描述