jsonarray相关知识
-
java处理json数据基本的JSONArray与JSONObject操作:JSONObject jsonObj =new JSONObject(); jsonObj.put("name0", "zhangsan"); jsonObj.put("sex1", "female"); System.out.println(jsonObj); //输出为:{"sex1":"female","name0":"zhangsan"} JSONArray jsonArray =new JSONArray(); jsonArray.add("11"); jsonArray.add("22"); jsonArray.
-
三级目录数据存取 */ //数据的存储解析 public ResData parClassVideo(String strJson,String uid) { ResData res = null; boolean result = false; try { res = parsResJson(strJson, ""); if (res.getStatus() == Constants.STATUS_SUCCESS) { db.deleteAll(ClassVideoInfo.class); db.deleteAll(ClassVideoInfoSecond.class); db.deleteAll(ClassVideoInfoThird.class); JSONObject jsonObject = new JSONObject(res.getData()); JSONArray jsonArray = jsonObject.getJS
-
JSONArray和JSONObject1, JSONObjectjson对象,就是一个键对应一个值,使用的是大括号{},即:{key:value}2,JSONArrayjson数组,是用中括号[],数组里面的项也是json键值对格式
-
java系列:项目中遇到的一些问题(持续更新中)JSONArray去重的问题JSONArray array = ["2","0","0","0","0","0"];private String[] instanceAaary(JSONArray array) throws JSONException{ String[] strs = new String[array.length()]; for (int i = 0; i < array.length(); i++) {  
jsonarray相关课程
jsonarray相关教程
- 3.2 JsonArray 处理器 与 JsonObjectTypeHandler 一样,在 handler 包下新建 JsonArrayTypeHandler 类,继承 BaseTypeHandler 类,并将具体方法的实现从 JSON.parseObject 改变为 JSON.parseArray,如下:@MappedJdbcTypes(JdbcType.VARCHAR)@MappedTypes({JSONArray.class})public class JsonArrayTypeHandler extends BaseTypeHandler<JSONArray> { @Override public void setNonNullParameter(PreparedStatement preparedStatement, int i, JSONArray o, JdbcType jdbcType) throws SQLException { preparedStatement.setString(i, JSON.toJSONString(o)); } @Override public JSONArray getNullableResult(ResultSet resultSet, String s) throws SQLException { String t = resultSet.getString(s); // // 变成了 parseArray return JSON.parseArray(t); } @Override public JSONArray getNullableResult(ResultSet resultSet, int i) throws SQLException { String t = resultSet.getString(i); // // 变成了 parseArray return JSON.parseArray(t); } @Override public JSONArray getNullableResult(CallableStatement callableStatement, int i) throws SQLException { String t = callableStatement.getString(i); // 变成了 parseArray return JSON.parseArray(t); }}
- 3. Json 解析示例 本节我们来用 Android 原生的 Json 工具对 1.2 小节中的“工程师”数据进行一个解析,主需要用到必考的两个类:JSONArray和JSONObject。
- 4.2 局部注册 由于全局注册会对其它类型产生歧义和污染,因此我们选择更加精准的局部注册。在 BlogMapper 中,我们来注册和使用类型处理器。在 BlogMapper.xml 文件中,我们添加上如下配置。<resultMap id="blogMap" type="com.imooc.mybatis.model.Blog"> <result column="id" property="id"/> <result column="info" property="info" typeHandler="com.imooc.mybatis.handler.JsonObjectTypeHandler"/> <result column="tags" property="tags" typeHandler="com.imooc.mybatis.handler.JsonArrayTypeHandler"/></resultMap><select id="selectById" resultMap="blogMap"> SELECT * FROM blog WHERE id = #{id}</select>我们定义了 名为 blogMap 的 resultMap 和名为 selectById 的查询。在 result 映射中,我们注册了相关的类型处理器,info 字段对应JsonObjectTypeHandler 类型处理器,tags 字段对应 JsonArrayTypeHandler 类型处理器。这样自定义的类型处理器不会污染到其它数据,blogMap 的类型 com.imooc.mybatis.model.Blog 定义如下:package com.imooc.mybatis.model;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;public class Blog { private Long id; private JSONObject info; private JSONArray tags; // 省略了 getter 和 setter 方法}4.3 处理 JDBC 类型在对应的 BlogMapper.java 接口上添加上对应的 selectById 方法:package com.imooc.mybatis.mapper;import com.imooc.mybatis.model.Blog;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface BlogMapper { Blog selectById(Integer id);}我们测试一下 selectById 方法:BlogMapper blogMapper = session.getMapper(BlogMapper.class);Blog blog = blogMapper.selectById(1);System.out.println(blog.toString());String title = blog.getInfo().getString("title");System.out.println(title);String tag = blog.getTags().getString(0);System.out.println(tag);输出结果如下:Blog{id=1, info={"rank":1,"title":"世界更大","content":".......****............"}, tags=["世界观"]}世界更大世界观从结果中可以看出,类型处理器成功的处理了查询的数据,info 和 tags 字段都能够通过 fastjson 的 API 来获取里面的内容。4.4 处理 JSON 类型在查询可以工作的情况下,那么如何通过 insert 插入 JSON 对象了。我们在 BlogMapper 中新增一个 insertBlog 方法,如下:<insert id="insertBlog"> INSERT INTO blog(info,tags) VALUES(#{info,typeHandler=com.imooc.mybatis.handler.JsonObjectTypeHandler}, #{tags,typeHandler=com.imooc.mybatis.handler.JsonArrayTypeHandler})</insert>public interface BlogMapper { int insertBlog(@Param("info") JSONObject info, @Param("tags") JSONArray tags);}这样 MyBatis 就可以处理 JSON 类型的参数了,我们再次测试一下:JSONObject info = new JSONObject().fluentPut("title", "测试案例").fluentPut("rank", 1);JSONArray tags = new JSONArray().fluentAdd("测试");int rows = blogMapper.insertBlog(info, tags);System.out.println(rows);输出结果:1可以看到类型处理器成为了 Java JSON 类型和 JDBC 类型转换桥梁,在查询的时候主动将数据库类型转化为了可用的 JSON 类型,而在插入的时候将 JSON 类型又转化为了数据库可识别的字符串类型。
- 2. Json 库的使用 Android 内部为我们提供了 Json 的解析接口,以下是接口中常用的类:JSONObject:(必考)对应一个 Json 对象,相当于上面例子中的“工程师”JSONArray:(必考)对应一个 Json 对象数组,相当于上面例子中的“工程师”数组JSONStringer:Json 文本辅助工具,可以帮助我们快速创建一个 Json StringJSONTokener:Json 特殊字符解析类JSONException:**Json 异常其中前两个打上“必考”标识的是重中之重,关于 Json 处理的 90% 问题都需要这两个类的帮忙,后面我们会看到这两个接口的具体用法。
- 4. 小结 本节学习了另一种数据格式,Json 相比 xml 更加精简,而且可以看到 API 的使用也更加直观方便,所以在网络数据的传输和存储方面会更胜一筹。Andorid 提供了一套 Json 数据的解析工具,里面最核心的两个类就是JSONArray和JSONObject,这两个是一定要掌握的。最后通过一个例子解析了一个对象,里面包含一个“工程师”数组,然后通过遍历数据即可得到各个“工程师”对象了。当然,除了 Android 内置的 Json 工具之外,还有很多第三方的解析工具,功能非常强大,但只要理解了 Json 数据格式的使用,各大框架也只是一个轮子的使用而已,大同小异。
- 3.2 解析逻辑 在实际开发中,解析逻辑通常可以单独提出一个类似 Utils 的工具类,这样可以提供给各方使用。本节放在 MainActivity 中完成,获取 Button 后在onClick()方法中调用parse()方法进行 Json 数据解析。最后将解析结果放到 TextView 上展示:package com.emercy.myapplication;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import org.json.JSONArray;import org.json.JSONObject;public class MainActivity extends Activity { public static final String JSON_STRING = "{\"Engineers\":[{\"skill\":\"Android\",\"language\":\"Java\",\"years\":\"5\"},{\"skill\":\"iOS\",\"language\":\"Object C\",\"years\":\"2\"},{\"skill\":\"Server\",\"language\":\"php\",\"years\":\"8\"}]}"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.parse).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { parse(JSON_STRING); } }); } private void parse(String jsonStr) { TextView textView = (TextView) findViewById(R.id.json); try { JSONObject engineers = new JSONObject(jsonStr); JSONArray array = engineers.getJSONArray("Engineers"); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < array.length(); i++) { JSONObject engineer = array.getJSONObject(i); String skill = engineer.getString("skill"); String language = engineer.getString("language"); int years = engineer.getInt("years"); stringBuilder.append("Engineer ").append(i) .append(": skill is ").append(skill) .append("; language is ").append(language) .append("; years is ").append(years).append("\n"); } textView.setText(stringBuilder.toString()); } catch (Exception e) { e.printStackTrace(); } }}核心解析逻辑都在parse()方法中,拿到 Json String 之后,首先从中去除“工程师”数组,然后遍历数组一次解析“skill”、“language”、“years”字段,挨个生成好“工程师”对象,然后拼接成结果文本展示到 TextView 上。编译后点击解析,结果如下:
jsonarray相关搜索
-
j2ee
j2ee是什么
jar格式
java
java api
java applet
java c
java jdk
java list
java map
java script
java se
java socket
java swing
java switch
java web
java xml
java 程序设计
java 多线程
java 环境变量