Skip to content

Commit 4a0f536

Browse files
committed
CHANGELOG.md v0.5.2
1 parent fbc6864 commit 4a0f536

28 files changed

+144
-120
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## v0.5.2
4+
- `Deserializer` reformat. `JsonItem` instances now don't need to know deserializers types except `Deserializer` itself.
5+
- `@JsonField` support to let json-fields be named in other way than in deserialized object
6+
- Added `DeserializerJsonItem` to support instances of `JsonItem`
7+
38
## v0.5.1
49
- Deserialization improvements
510
- `.asObject<ClassName>()` instead of `.asObject(ClassName::class)`

src/iris/json/JsonArray.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ package iris.json
44
* @created 26.09.2020
55
* @author [Ivan Ivanov](https://vk.com/irisism)
66
*/
7-
interface JsonArray: JsonItem, Iterable<JsonItem>
7+
interface JsonArray: JsonItem, Iterable<JsonItem> {
8+
fun getList(): Collection<JsonItem>
9+
}

src/iris/json/JsonItem.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package iris.json
22

3-
import iris.json.serialization.Deserializer
43
import iris.json.serialization.DeserializerCache
5-
import kotlin.reflect.KClass
64
import kotlin.reflect.typeOf
75

86
/**
@@ -47,11 +45,6 @@ interface JsonItem {
4745

4846
fun asMap(): Map<String, Any?>
4947

50-
@Deprecated("Use JsonItem.asObject<T>() instead")
51-
fun <T: Any>asObject(d: KClass<T>): T
52-
53-
fun <T: Any>asObject(info: Deserializer): T
54-
5548
fun asStringOrNull(): String?
5649

5750
fun asString(): String
@@ -75,5 +68,5 @@ interface JsonItem {
7568

7669
inline fun <reified T>JsonItem.asObject(): T {
7770
val deserializer = DeserializerCache.getDeserializer(typeOf<T>())
78-
return this.asObject(deserializer)
71+
return deserializer.deserialize(this)
7972
}

src/iris/json/JsonObject.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ package iris.json
88
typealias JsonEntry = Pair<CharSequence, JsonItem>
99

1010
interface JsonObject: JsonItem, Iterable<JsonEntry> {
11-
//class Entry(val key: CharSequence, val value: JsonItem)
11+
fun getEntries(): Collection<JsonEntry>
1212
}

src/iris/json/flow/FlowArray.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package iris.json.flow
33
import iris.json.JsonArray
44
import iris.json.JsonItem
55
import iris.json.proxy.JsonProxyUtil
6-
import iris.json.serialization.Deserializer
7-
import iris.json.serialization.DeserializerCollection
86

97
/**
108
* @created 20.09.2020
@@ -102,6 +100,11 @@ class FlowArray(tokener: Tokener) : FlowItem(tokener), JsonArray {
102100
return get(ind)
103101
}
104102

103+
override fun getList(): Collection<JsonItem> {
104+
parse()
105+
return items
106+
}
107+
105108
override fun set(ind: Int, value: Any?): JsonItem {
106109
items[ind] = JsonProxyUtil.wrap(value)
107110
val obj = this.obj
@@ -151,9 +154,4 @@ class FlowArray(tokener: Tokener) : FlowItem(tokener), JsonArray {
151154
return get(pointer++)
152155
}
153156
}
154-
155-
override fun <T : Any> asObject(info: Deserializer): T {
156-
parse()
157-
return (info as DeserializerCollection).getObject(this.items) as T
158-
}
159157
}

src/iris/json/flow/FlowObject.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import iris.json.JsonItem
55
import iris.json.JsonObject
66
import iris.json.plain.IrisJsonNull
77
import iris.json.proxy.JsonProxyUtil
8-
import iris.json.serialization.Deserializer
9-
import iris.json.serialization.DeserializerClass
108
import java.util.*
119

1210
/**
@@ -136,9 +134,8 @@ class FlowObject(tokener: Tokener) : FlowItem(tokener), JsonObject {
136134
return buffer
137135
}
138136

139-
override fun <T : Any> asObject(info: Deserializer): T {
140-
parse()
141-
return (info as DeserializerClass).getObject(entries)
137+
override fun getEntries(): Collection<JsonEntry> {
138+
return entries
142139
}
143140

144141
override fun isObject() = true

src/iris/json/flow/FlowString.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package iris.json.flow
33
import iris.json.JsonString
44
import iris.json.plain.IrisJsonItem
55
import iris.json.plain.IrisJsonNull
6-
import iris.json.serialization.Deserializer
76
import iris.sequence.IrisSequence
87

98
/**
@@ -96,9 +95,5 @@ class FlowString(tokener: Tokener, val quote: Char) : FlowItem(tokener), JsonStr
9695
return ready!!
9796
}
9897

99-
override fun <T : Any> asObject(info: Deserializer): T {
100-
return obj() as T
101-
}
102-
10398
override fun isPrimitive() = true
10499
}

src/iris/json/flow/FlowValue.kt

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import iris.json.IrisJson
44
import iris.json.JsonValue
55
import iris.json.plain.IrisJsonItem
66
import iris.json.plain.IrisJsonNull
7-
import iris.json.serialization.Deserializer
8-
import iris.json.serialization.DeserializerPrimitive
97
import iris.sequence.*
108

119
/**
@@ -37,8 +35,8 @@ class FlowValue(tokener: Tokener) : FlowItem(tokener), JsonValue {
3735
return when (data.type) {
3836
IrisJson.ValueType.Constant -> when (s) {
3937
"null" -> null
40-
"true" -> true
41-
"false" -> false
38+
"true", "1" -> true
39+
"false", "0" -> false
4240
else -> s.toString()
4341
}
4442
IrisJson.ValueType.Integer -> s.toLong()
@@ -144,10 +142,5 @@ class FlowValue(tokener: Tokener) : FlowItem(tokener), JsonValue {
144142
data = this.tokener.readPrimitive()
145143
}
146144

147-
override fun <T : Any> asObject(info: Deserializer): T {
148-
parse()
149-
return (info as DeserializerPrimitive).getValue(this) as T
150-
}
151-
152145
override fun isPrimitive() = true
153146
}

src/iris/json/plain/IrisJsonArray.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package iris.json.plain
33
import iris.json.JsonArray
44
import iris.json.JsonItem
55
import iris.json.proxy.JsonProxyUtil
6-
import iris.json.serialization.Deserializer
7-
import iris.json.serialization.DeserializerCollectionImpl
86

97
/**
108
* @created 14.04.2020
@@ -28,6 +26,10 @@ class IrisJsonArray(private val items: List<IrisJsonItem>) : IrisJsonItem(), Jso
2826
return get(ind)
2927
}
3028

29+
override fun getList(): Collection<JsonItem> {
30+
return items
31+
}
32+
3133
override fun set(ind: Int, value: Any?): JsonItem {
3234
(items as MutableList<Any?>)[ind] = JsonProxyUtil.wrap(value)
3335
val obj = this.obj
@@ -75,8 +77,4 @@ class IrisJsonArray(private val items: List<IrisJsonItem>) : IrisJsonItem(), Jso
7577
return item
7678
}
7779
}
78-
79-
override fun <T : Any> asObject(info: Deserializer): T {
80-
return (info as DeserializerCollectionImpl).getObject(this.items) as T
81-
}
8280
}

src/iris/json/plain/IrisJsonItem.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package iris.json.plain
22

33
import iris.json.JsonItem
4-
import iris.json.serialization.DeserializerCache
5-
import kotlin.reflect.KClass
64

75
/**
86
* @created 14.04.2020
@@ -158,8 +156,4 @@ abstract class IrisJsonItem() : JsonItem {
158156
override fun isArray() = false
159157

160158
override fun isObject() = false
161-
162-
override fun <T : Any> asObject(d: KClass<T>): T {
163-
return asObject(DeserializerCache.getDeserializer(d))
164-
}
165159
}

0 commit comments

Comments
 (0)