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())
}