1. 程式人生 > >LitJSON之JSON讀取和寫入

LitJSON之JSON讀取和寫入

JSON讀取和寫入

一些開發者可能熟悉JSON資料的另一種處理方法:即通過利用類似流的方式來讀取和寫入資料。實現這種方法的是JsonReader類和 JsonWriter類。

這兩個類實際上是整個庫的基礎。JsonMapper 建立在這兩個型別之上。開發者可以認為讀取和寫入類是Litjson的底層程式介面。

使用JsonReader例子

using LitJson;
using System;

public class DataReader
{
    public static void Main()
    {
        string sample = @"{
            ""name""  : ""Bill"",
            ""age""   : 32,
            ""awake"" : true,
            ""n""     : 1994.0226,
            ""note""  : [ ""life"", ""is"", ""but"", ""a"", ""dream"" ]
          }"
; PrintJson(sample); } public static void PrintJson(string json) { JsonReader reader = new JsonReader(json); Console.WriteLine ("{0,14} {1,10} {2,16}", "Token", "Value", "Type"); Console.WriteLine (new String ('-', 42)); // The Read() method returns false when there's nothing else to read
while (reader.Read()) { string type = reader.Value != null ? reader.Value.GetType().ToString() : ""; Console.WriteLine("{0,14} {1,10} {2,16}", reader.Token, reader.Value, type); } } }

生成如下輸出:

Token      Value             Type
------------------------------------------
   ObjectStart                            
  PropertyName       name    System.String
String Bill System.String PropertyName age System.String Int 32 System.Int32 PropertyName awake System.String Boolean True System.Boolean PropertyName n System.String Double 1994.0226 System.Double PropertyName note System.String ArrayStart String life System.String String is System.String String but System.String String a System.String String dream System.String ArrayEnd ObjectEnd

使用JsonWriter

JsonWriter 十分簡單。請記住:如果你希望把任意一個物件轉成JSON字串,一般情況下使用JsonMapper.ToJson即可。

using LitJson;
using System;
using System.Text;

public class DataWriter
{
    public static void Main()
    {
        StringBuilder sb = new StringBuilder();
        JsonWriter writer = new JsonWriter(sb);

        writer.WriteArrayStart();
        writer.Write(1);
        writer.Write(2);
        writer.Write(3);

        writer.WriteObjectStart();
        writer.WritePropertyName("color");
        writer.Write("blue");
        writer.WriteObjectEnd();

        writer.WriteArrayEnd();

        Console.WriteLine(sb.ToString());
    }
}

案例輸出

[1,2,3,{"color":"blue"}]

目錄