Example:

拼一个如下的json格式String

{
    [
        {
            "id": 912345678901,
            "text": "How do I write JSON on Android?",
            "geo": null,
            "user": {
                "name": "android_newb",
                "followers_count": 41
            }
        },
        {
            "id": 912345678902,
            "text": "@android_newb just use android.util.JsonWriter!",
            "geo": [
                50.454722,
                -104.606667
            ],
            "user": {
                "name": "jesse",
                "followers_count": 2
            }
        }
    ]
}

关键代码:

 public static String writeJsonStream(List<Message> messages)throwsIOException{

  if(messages!=null && messages.size() > 0){

    ByteArrayOutputStream out = new ByteArrayOutputStream();
           JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));

    writer.setIndent("");
    writeMessagesArray(writer, messages);      writer.close();
    byte[] bytes = out.toByteArray();       return new String(bytes);

  }
     return null;

}

private static void writeMessagesArray(JsonWriter writer,List messages)throwsIOException{
     writer.beginArray();
     for(Message message : messages){
       writeMessage(writer, message);
     }
     writer.endArray();

}

private static void writeMessage(JsonWriter writer,Message message)throwsIOException{     writer.beginObject();     writer.name("id").value(message.getId());     writer.name("text").value(message.getText());     if(message.getGeo()!=null){       writer.name("geo");       writeDoublesArray(writer, message.getGeo());     }else{       writer.name("geo").nullValue();     }     writer.name("user");     writeUser(writer, message.getUser());     writer.endObject();}

private static void writeUser(JsonWriter writer,User user)throwsIOException{     writer.beginObject();     writer.name("name").value(user.getName());     writer.name("followers_count").value(user.getFollowersCount());     writer.endObject();}

 private static void writeDoublesArray(JsonWriter writer,List doubles)throwsIOException{     writer.beginArray();     for(Double value : doubles){       writer.value(value);     }     writer.endArray(); }

转载于:https://www.cnblogs.com/bravestarrhu/p/3605623.html

JsonWriter使用相关推荐

  1. org.apache.struts2.json.JSONWriter can not access a member of class

    偶遇一个问题:org.apache.struts2.json.JSONWriter can not access a member of class  org.apache.tomcat.dbcp.d ...

  2. C#.Net 使用 JsonReader/JsonWriter 高性能解析/生成 Json 文档

    Swifter.Json 是由本人编写的高性能且多功能的 Json 解析库.下图是 Swifter.Json 与 .Net 平台上的其他 Json 库性能对比: 在 Swifter.Json 近期更新 ...

  3. Class com.googlecode.jsonplugin.JSONWriter ca...

    2019独角兽企业重金招聘Python工程师标准>>> http://blog.csdn.net/tnqin/article/details/7831284 转载于:https:// ...

  4. Json.Net学习笔记

    Json.Net学习笔记 摘自:  http://www.verydemo.com/demo_c360_i45119.html 分类: 编程语言/ ASP.NET/ 文章 导读:string goog ...

  5. 从一个Bug开始,重新认识一个强大的 Gson

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:Mafly, 地址:www.cnblogs.com/mafly/p/gson.html 从 ...

  6. json jsono wsdl_记录一下json的生成

    在UE4里json的生成也很简单,不过我觉得我用的方法还是比较麻烦的,又简单的欢迎大神指导. void HandleJsonData::MakeTestRegisterJson(const TShar ...

  7. Retrofit全攻略——进阶篇

    最近事比较多,距离上次写文章已经过去了一个月了.上一篇文章Retrofit全攻略--基础篇 介绍了Retrofit的基础用法,这篇文章介绍点进阶的用法. 打印网络日志 在开发阶段,为了方便调试,我们需 ...

  8. json.net使用说明一

    json.net灵活的实现.net对象和json之间进行转换,且性能比其他两种json序列化性能更高,使用方便简单.json.net使用的好处有如下几种: 序列化和反序列化JSON(JsonConve ...

  9. Asp.net Core1.1创建简单WebAPI对Mongodb进行CRUD操作

    1.使用VS2017建立一个.netcore1.1的WebAPI项目 选择webAPI模板 2.添加mongodb驱动 工具--NuGet包管理器--程序包管理控制台: Install-Package ...

最新文章

  1. 基于webuploader.js的单图片上传封装
  2. XGBoost对比RandomForest、GBDT、决策树、SVM,XGB+LR精度还能提升
  3. 现代制造工程课堂笔记07——应力应变分析(考点应力莫尔圆)
  4. SpringBootAdmin服务端
  5. 详解SMS下OSD2008
  6. 穷举法破解集合小游戏~
  7. 中文分词算法工具hanlp源码解析
  8. 乐山计算机学校搬迁,【骨头再次发贴】谈谈新校区。
  9. pokemon go 和 虚拟gps
  10. python爬虫+selenium模拟点击+网页内容需要点击打开
  11. java一元二次方程用if_用javascript写一个求一元二次方程的页面 用JAVA写一个求解一元二次方程的类...
  12. installing selected parcels阶段卡在activating状态
  13. Trie(前缀树,prefix tree)
  14. html 怎么转换,将 HTML 转换成任意你想要的形式!
  15. c++传输二进制数据
  16. ssh隧道连接的3种方式
  17. VIF-Benchmark: All infrare and visible image fusion method in one framework
  18. 第一行代码-android-第三版-pdf扫描-思维导图-课件-源码
  19. 更改NavMenu 导航菜单激活时的背景颜色
  20. python通过url获取文件名和文件的后缀

热门文章

  1. C代码中的命名方式总结和改进
  2. 一个监测IIS,并定时重新启动的程序。
  3. MONGODB 数据的存储顺序发现不是按_ID 的顺序存储的原因
  4. SQL SERVER 里的 try catch
  5. Android activity-alias 的使用
  6. android dip转px
  7. gradle工作流程
  8. Source Insight中查看文件显示全路径
  9. css盒模型和元素绘制
  10. java servlet上传centos服务器