1. 程式人生 > >android從assets中獲取json資料

android從assets中獲取json資料

這裡寫圖片描述
1.首先是匯入json檔案

[
  {
    "actual": "103",
    "createTime": "Apr 10, 2017 12:04:14 AM",
    "economicId": 518,
    "forecast": "102",
    "historyId": 449366,
    "previous": "103",
    "revised": "",
    "timestamp": 1456213500
  },
  {
    "actual": "102",
    "createTime": "Apr 10, 2017 12:04:14 AM",
    "economicId"
: 518, "forecast": "103", "historyId": 449367, "previous": "103", "revised": "101", "timestamp": 1458805500 }, { "actual": "105", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "101", "historyId": 449368, "previous": "102", "revised": "104"
, "timestamp": 1461221100 }, { "actual": "104", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "104", "historyId": 449369, "previous": "105", "revised": "", "timestamp": 1464072300 }, { "actual": "102", "createTime": "Apr 10, 2017 12:04:14 AM"
, "economicId": 518, "forecast": "103", "historyId": 449370, "previous": "104", "revised": "", "timestamp": 1466664300 }, { "actual": "103", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "101", "historyId": 449371, "previous": "102", "revised": "", "timestamp": 1469083500 }, { "actual": "101", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "103", "historyId": 449372, "previous": "103", "revised": "", "timestamp": 1472107500 }, { "actual": "103", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "101", "historyId": 449373, "previous": "101", "revised": "", "timestamp": 1474526700 }, { "actual": "103", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "103", "historyId": 449374, "previous": "103", "revised": "102", "timestamp": 1477377900 }, { "actual": "102", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "102", "historyId": 449375, "previous": "103", "revised": "103", "timestamp": 1479973500 }, { "actual": "106", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "103", "historyId": 449376, "previous": "102", "revised": "", "timestamp": 1481874300 }, { "actual": "106", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "106", "historyId": 449377, "previous": "106", "revised": "", "timestamp": 1485330300 }, { "actual": "107", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "106", "historyId": 449378, "previous": "106", "revised": "", "timestamp": 1487835900 }, { "actual": "105", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "107", "historyId": 692633, "previous": "107", "revised": "104", "timestamp": 1490255100 }, { "actual": "108", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "104", "historyId": 692634, "previous": "105", "revised": "104", "timestamp": 1493102700 }, { "actual": "109", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "108", "historyId": 692635, "previous": "109", "revised": "", "timestamp": 1495521900 }, { "actual": "109", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "109", "historyId": 692636, "previous": "109", "revised": "108", "timestamp": 1498113900 }, { "actual": "109", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "108", "historyId": 692637, "previous": "109", "revised": "108", "timestamp": 1500965100 }, { "actual": "111", "createTime": "Aug 24, 2017 6:14:38 PM", "economicId": 518, "forecast": "108", "historyId": 696718, "previous": "108", "revised": "109", "timestamp": 1503557100 }, { "actual": "110", "createTime": "Oct 9, 2017 9:07:19 AM", "economicId": 518, "forecast": "", "historyId": 698671, "previous": "111", "revised": "", "timestamp": 1506408300 } ]

2.工具類

public class SimulateNetAPI {
    /**
     * 獲取去最原始的資料資訊
     *
     * @return json data
     */
    public static String getOriginalFundData(Context context) {
        InputStream input = null;
        try {
            input = context.getAssets().open("fund.json");
            String json = convertStreamToString(input);
            return json;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * input 流轉換為字串
     *
     * @param is
     * @return
     */
    private static String convertStreamToString(java.io.InputStream is) {
        String s = null;
        try {
            Scanner scanner = new Scanner(is, "UTF-8").useDelimiter("\\A");
            if (scanner.hasNext()) {
                s = scanner.next();
            }
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return s;
    }
}

3.activity中使用

String originalFundData = SimulateNetAPI.getOriginalFundData(MainActivity.this);

//如果要把json轉為實體需結合Gson
//此處為陣列
OriginFundMode[] originFunModes;
                try {
                    originFunModes = GsonUtils.fromJson2Object(originalFundData, OriginFundMode[].class);
                } catch (Exception e) {
                    e.printStackTrace();
                    return;
                }
                List<OriginFundMode> OriginFundModeList = Arrays.asList(originFunModes);

GsonUtils

public class GsonUtils {

    private static Gson gson = null;
    private static Gson prettyGson = null;

    static {
        gson = new GsonBuilder()
                .setDateFormat("yyyy-MM-dd HH:mm:ss").create();
        prettyGson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")
                .setPrettyPrinting()
                .create();
    }

    /**
     * 小寫下劃線的格式解析JSON字串到物件
     * <p>例如 is_success->isSuccess</p>
     *
     * @param json
     * @param classOfT
     * @return
     */
    public static <T> T fromJsonUnderScoreStyle(String json, Class<T> classOfT) {
        return gson.fromJson(json, classOfT);
    }

    /**
     * JSON字串轉為Map<String,String>
     *
     * @param json
     * @return
     */
    @SuppressWarnings("all")
    public static <T> T fronJson2Map(String json) {
        return gson.fromJson(json, new TypeToken<Map<String, String>>() {
        }.getType());
    }

    /**
     * 小寫下劃線的格式將物件轉換成JSON字串
     *
     * @param src
     * @return
     */
    public static String toJson(Object src) {
        return gson.toJson(src);
    }

    public static String toPrettyString(Object src) {
        return prettyGson.toJson(src);
    }

    public static <T> T fromJson2Object(String src, Class<T> t) {
        return gson.fromJson(src, t);
    }

    public static <T> T fromJson2Object(String src, Type typeOfT) {
        return gson.fromJson(src, typeOfT);
    }

}