7.仓颉编程_json对象与json字符串操作

发布于:2024-08-08 ⋅ 阅读:(94) ⋅ 点赞:(0)

1创建Json对象转json字符串输出

//package test2
import encoding.json.*
import std.collection.*

main() {
    var a: JsonValue = JsonNull()
    var b: JsonValue = JsonBool(true)
    var c: JsonValue = JsonBool(false)
    var d: JsonValue = JsonInt(5678)
    var e: JsonValue = JsonFloat(736623.532)
    var list: ArrayList<JsonValue> = ArrayList<JsonValue>()
    var list2: ArrayList<JsonValue> = ArrayList<JsonValue>()
    var map = JsonObject()
    var map1 = JsonObject()
    map1.put("a", JsonString("ttttt"))
    map1.put("b", b)
    map1.put("c", JsonString("xxxxx"))
    list2.append(b)
    list2.append(JsonInt(66666))
    list2.append(map1)
    list2.append(JsonString("qwerty"))
    list.append(b)
    list.append(a)
    list.append(map)
    list.append(c)
    list.append(JsonArray(list2))
    list.append(d)
    list.append(JsonString("wwwww"))
    list.append(e)
    var result: JsonValue = JsonArray(list)
    println("字符串输出:")
    println(result.toString())
    println("Json字符串输出:")
    println(result.toJsonString())
    var json_str = result.toJsonString()
  //  var j_obj = 
   
    
}

2json字符串反序列化成json对象

//package json_demo
import encoding.json.stream.*
import std.io.*
import std.collection.*

class A <: JsonDeserializable<A> 
{
    var key_1: Option<String> = None
    var key_2: Bool = false
    var key_3: Float64 = 0.0
    var key_4: String = ""
    var key_5: Array<Int64> = Array<Int64>()
    var key_6: HashMap<String, String> = HashMap<String, String>()

    public static func fromJson(r: JsonReader): A 
    {
        var res = A()
        while (let Some(v) <- r.peek()) 
        {
            match(v) 
            {
                case BeginObject =>
                    r.startObject()
                    while(r.peek() != EndObject) 
                    {
                        let n = r.readName()
                        match (n) 
                        {
                            case "key_1" => res.key_1 = r.readValue<Option<String>>()
                            case "key_2" => res.key_2 = r.readValue<Bool>()
                            case "key_3" => res.key_3 = r.readValue<Float64>()
                            case "key_4" => res.key_4 = r.readValue<String>()
                            case "key_5" => res.key_5 = r.readValue<Array<Int64>>()
                            case "key_6" => res.key_6 = r.readValue<HashMap<String, String>>()
                            case _ => ()
                        }
                    }
                    r.endObject()
                    break
                case _ => throw Exception()
            }
        }
        return res
    }

    func toString(): String 
    {
        return "${key_1}\n${key_2}\n${key_3}\n${key_4}\n${key_5}\n${key_6}"
    }
}

main() 
{
    let jsonStr = ##"{"key_1": null, "key_2": true, "key_3": 223.156, "key_4": "str word", "key_5": [567, 123], "key_6": {"key_7": " ", "key_8": "\\a"}}"##
    var bas = ByteArrayStream()
    unsafe { bas.write(jsonStr.rawData()) }
    var reader = JsonReader(bas)
    var obj = A.fromJson(reader)
    println(obj.toString())
}


网站公告

今日签到

点亮在社区的每一天
去签到