Skip to content

Commit 8fd7140

Browse files
committed
Поддержка порядка ключей у объектов в модуле json
1 parent d3b5d9f commit 8fd7140

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

src/main/java/com/annimon/ownlang/lib/ValueUtils.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.lang.reflect.Field;
55
import java.lang.reflect.Modifier;
66
import java.util.Iterator;
7+
import java.util.LinkedHashMap;
78
import java.util.Map;
89
import org.json.JSONArray;
910
import org.json.JSONObject;
@@ -28,7 +29,7 @@ public static Object toObject(Value val) {
2829
}
2930

3031
public static JSONObject toObject(MapValue map) {
31-
final JSONObject result = new JSONObject();
32+
final JSONObject result = new JSONObject(new LinkedHashMap<String, Object>());
3233
for (Map.Entry<Value, Value> entry : map) {
3334
final String key = entry.getKey().asString();
3435
final Object value = toObject(entry.getValue());
@@ -66,7 +67,7 @@ public static Value toValue(Object obj) {
6667
}
6768

6869
public static MapValue toValue(JSONObject json) {
69-
final MapValue result = new MapValue(json.length());
70+
final MapValue result = new MapValue(new LinkedHashMap<>(json.length()));
7071
final Iterator<String> it = json.keys();
7172
while(it.hasNext()) {
7273
final String key = it.next();

src/main/java/com/annimon/ownlang/modules/yaml/yaml_encode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.annimon.ownlang.lib.*;
44
import java.util.ArrayList;
5-
import java.util.HashMap;
5+
import java.util.LinkedHashMap;
66
import java.util.List;
77
import java.util.Map;
88
import org.yaml.snakeyaml.Yaml;
@@ -37,7 +37,7 @@ private Object process(Value val) {
3737
}
3838

3939
private Object process(MapValue map) {
40-
final Map<String, Object> result = new HashMap<>();
40+
final Map<String, Object> result = new LinkedHashMap<>();
4141
for (Map.Entry<Value, Value> entry : map) {
4242
final String key = entry.getKey().asString();
4343
final Object value = process(entry.getValue());

src/main/java/com/annimon/ownlang/utils/ModulesInfoCreator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public List<Map<String, Object>> constants() {
131131
constant.put("type", value.type());
132132
constant.put("typeName", Types.typeToString(value.type()));
133133
if (value.type() == Types.MAP) {
134-
String text = ((Map<Value, Value>) value.raw()).entrySet().stream()
134+
String text = ((MapValue) value).getMap().entrySet().stream()
135135
.sorted(Comparator.comparing(
136136
e -> ((MapValue)value).size() > 16 ? e.getKey() : e.getValue()))
137137
.map(Object::toString)

0 commit comments

Comments
 (0)