You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中将服务端存储的CSV文件转换为JSON的实现咨询

服务端CSV转JSON实现方案

1. 前置配置

首先要在AndroidManifest.xml中添加网络权限:

<uses-permission android:name="android.permission.INTERNET" />
<!-- 如果服务端是http明文协议,Android 9及以上需要额外添加配置 -->
<application
    ...
    android:usesCleartextTraffic="true">
    ...
</application>

如果使用OkHttp作为网络请求框架、Gson做JSON序列化,需要在模块级build.gradle中添加依赖:

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.10.0'
    implementation 'com.google.code.gson:gson:2.10.1'
}

2. 核心逻辑调整

你原有代码的CSV解析逻辑可以完全复用,只需要把本地资源输入流替换为服务端请求返回的输入流即可。注意网络请求必须在子线程执行,示例代码如下:

// 子线程执行网络请求,避免主线程阻塞
new Thread(() -> {
    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder()
        // 替换为你的服务端CSV文件实际地址
        .url("http://your-server-address/target.csv")
        .build();
    try {
        Response response = client.newCall(request).execute();
        if (!response.isSuccessful()) {
            throw new IOException("网络请求失败,错误码:" + response.code());
        }
        // 拿到服务端返回的输入流,后续解析逻辑和你原有逻辑完全一致
        InputStream is = response.body().byteStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
        String line = "";
        List<WeatherSample> weatherSamples = new ArrayList<>();
        // 跳过表头行
        reader.readLine();
        while ((line = reader.readLine()) != null) {
            String[] tokens = line.split(",");
            WeatherSample sample = new WeatherSample();
            sample.setLeftHipAngle(Double.parseDouble(tokens[0]));
            sample.setLeftKneeAngle(Double.parseDouble(tokens[2]));
            sample.setRightHipAngle(Double.parseDouble(tokens[4]));
            sample.setRightKneeAngle(Double.parseDouble(tokens[6]));
            sample.setRealTime(Double.parseDouble(tokens[8]));
            weatherSamples.add(sample);    
        }
        // 解析完成后直接转JSON字符串
        Gson gson = new Gson();
        String jsonResult = gson.toJson(weatherSamples);
        // 如需更新UI,切回主线程操作
        runOnUiThread(() -> {
            // 这里处理JSON结果,比如存储、展示、上传等
            Log.d("转换结果", jsonResult);
        });
    } catch (IOException e) {
        Log.wtf("MyActivity", "处理CSV文件出错", e);
        e.printStackTrace();
    }
}).start();

3. 注意事项

  • 禁止在主线程执行网络请求,Android 4.0及以上系统会直接抛出主线程网络异常
  • 如果CSV字段存在包含逗号的特殊场景,建议使用专门的CSV解析库(比如OpenCSV)替代split(",")的手动解析逻辑,避免解析错误
  • 服务端CSV的编码要和代码中指定的编码一致,否则会出现中文乱码

内容的提问来源于stack exchange,提问作者NekoSenpai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:54:01