解析JSON存到数据库

这篇博客介绍了如何在Android应用中将JSON数据存入SQLite数据库。首先展示了一个`MainActivity`,接着创建了一个继承自`SQLiteOpenHelper`的`Demo`类用于初始化数据库。在`onCreate`方法中创建了名为`Rikao`的表,包含`id`和`title`两个字段。然后定义了一个`Dao`类,包含`add`方法,用于向数据库插入数据。该方法通过`ContentValues`设置字段并调用`db.insert`来完成添加操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//主页面

public class MainActivity extends AppCompatActivity {

    private Dao dao;
    Bean bean;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dao = new Dao(this);
    }
public void Button(View view){
    jiexi("http://japi.juhe.cn/health_knowledge/infoList?key=d2e173f79187d521231467d23c7dfb81");
}
public void jiexi(String path){
    new AsyncTask<String,Void,String>(){
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            if(s != null){
                Gson gson = new Gson();
                bean = gson.fromJson(s, Bean.class);
                List<Bean.ResultBean.DataBean> list = bean.getResult().getData();
                for (Bean.ResultBean.DataBean bean: list) {
                    String title = bean.getTitle();
                    dao.add(title);

                }
            }
        }
        @Override
        protected String doInBackground(String... params) {
            try {
                String path = params[0];
                URL url = new URL(path);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setRequestMethod("GET");
                connection.setReadTimeout(5000);
                connection.setConnectTimeout(5000);
                int code = connection.getResponseCode();
                if(code == HttpURLConnection.HTTP_OK){
                    InputStream is = connection.getInputStream();
                    String json = Utils.read(is);
                    System.out.println("----------------"+json);
                    return json;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }.execute(path);

}

//创建数据库(继承SQLiteOpenHelper)

public class Demo extends SQLiteOpenHelper {
    public Demo(Context context){
        super(context,"day_14",null,1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table Rikao(id Integer primary key autoincrement,title varchar(20))");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

//添加的方法

public class Dao {
    private final SQLiteDatabase db;
    public Dao(Context context){
        Demo demo = new Demo(context);
        db = demo.getWritableDatabase();
    }
    public boolean add(String title){
        ContentValues values = new ContentValues();
        values.put("name",title);
        long l = db.insert("Rikao", null, values);
        if(l != -1){
            return true;
        }else{
            return false;
        }
    }
}

### 解析 JSON 数据存储至 MySQL 在 IntelliJ IDEA 中处理从网络请求获得的 JSON 数据,将其解析后存入 MySQL 数据库的过程涉及多个方面。此过程通常包括发送 HTTP 请求获取数据、使用合适的 Java 库来解析 JSON 响应以及通过 JDBC 或 ORM 框架(如 MyBatis)与数据库交互。 #### 准备工作 为了简化操作,在项目中引入必要的依赖项,比如用于发起 HTTP 请求的 `HttpClient` 或者更高级别的封装工具如 Retrofit;对于 JSON 处理可以选择 Jackson 或 Gson 这样的流行库;而针对数据库连接,则推荐采用 Spring Data JPA 或 MyBatis 来管理事务和映射关系[^1]。 #### 获取 JSON 数据 假设已经有一个 URL 可以返回所需的 JSON 数据: ```java import java.net.URI; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class JsonFetcher { public static String fetchJson(String url) throws Exception { try (CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpGet request = new HttpGet(new URI(url)); try (CloseableHttpResponse response = httpClient.execute(request)) { return EntityUtils.toString(response.getEntity()); } } } } ``` 这段代码展示了如何创建一个简单的 HTTP GET 请求以获取远程服务器上的资源内容[^4]。 #### 解析 JSON 转换成实体对象 一旦有了原始字符串形式的 JSON 文本,就可以利用像 Jackson 这样强大的序列化/反序列化工具体现其结构化的表示方式——即 POJOs (Plain Old Java Objects)。下面是一个例子说明怎样定义模型类且完成由 JSON 到对象之间的转变: ```java // 定义对应的Java Bean 类 class CityBean { private Long id; private String province; private String city; private String district; // Getters and Setters... } // 使用Jackson将JSON转为对象 ObjectMapper mapper = new ObjectMapper(); CityBean bean = mapper.readValue(jsonString, CityBean.class); ``` 上述片段里提到的对象映射器能够自动识别字段名称匹配情况从而填充属性值[^3]。 #### 将数据保存到 MySQL 最后一步就是把经过加工整理后的业务逻辑单元持久化到关系型数据库当中去了。如果选择了 MyBatis 作为解决方案的一部分的话,那么只需要编写少量 XML 配置文件即可实现 CRUD 功能。当然也可以借助于 Spring Boot 的自动化配置特性进一步减少样板式的编码量。 ```java @Autowired private CityDao cityDao; // DAO 接口 @Transactional public void saveCities(List<CityBean> cities){ for(CityBean c : cities){ cityDao.insert(c); // 插入记录 } } ``` 以上展示了一个典型的服务层方法签名及其内部实现细节,它负责协调各个组件共同作用最终达到预期目的[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值