-
Notifications
You must be signed in to change notification settings - Fork 8
/
JsonExample.kt
37 lines (31 loc) · 1000 Bytes
/
JsonExample.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package org.pantsbuild.example.json
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import java.nio.charset.StandardCharsets
import java.nio.file.Files
import java.nio.file.Paths
@Serializable
data class User(
val name: String,
val email: String,
)
fun decodeUser(file: String) {
val contentBytes = Files.readAllBytes(Paths.get(file))
val content = String(contentBytes, StandardCharsets.UTF_8)
val user = Json.decodeFromString<User>(content)
println("Name: ${user.name}")
println("Email: ${user.email}")
}
fun encodeUser(name: String, email: String) {
val user = User(name, email)
println(Json.encodeToString(user))
}
fun main(args: Array<String>) {
when (args.size) {
1 -> decodeUser(args[0])
2 -> encodeUser(args[0], args[1])
else -> throw IllegalArgumentException("invalid number of parameters")
}
}