zoukankan      html  css  js  c++  java
  • android使用JsonWriter拼json字符串

    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();
     
    }
  • 相关阅读:
    剑指 Offer 67. 把字符串转换成整数 && Leetcode 8 字符串转换整数 (atoi)
    剑指 Offer 49. 丑数 && Leetcode 264. 丑数 II
    [LeetCode] Implement strStr()
    [LeetCode] Rotate Image
    [LeetCode] Remove Duplicates from Sorted List II
    [LeetCode] Gas Station
    OpenCV-paper detection & perspective transformation 相关资料
    Install PIL on mac osX10.9
    为什么是 n(n+1)/2 ?
    数组排序
  • 原文地址:https://www.cnblogs.com/xgjblog/p/3633568.html
Copyright © 2011-2022 走看看