Есть ли стандартный способ сделать это?Как преобразовать SimpleOrderedMap в строку JSON или объект JSON?
ответ
Вкратце: нет, поскольку JSON не имеет примитивного упорядоченного типа карты.
Первым шагом является определение требований вашего клиента, в том что касается декодирования строки JSON. Поскольку спецификация JSON не имеет упорядоченного типа карты, вам нужно будет решить, какое представление использовать. Выбор, который вы сделаете, будет зависеть от требований к декодированию вашего клиента.
Если у вас есть полный контроль над декодированием строки JSON, вы можете просто закодировать объект на карте в порядке, используя библиотеку JSON, которая гарантированно сериализует вещи в порядке прохождения итератора.
Если вы не можете гарантировать это, вы должны придумать представление самостоятельно. Два простых примеров:
список поочерёдно:
"[key1, value1, key2, value2]"
Список ключевых/объектов ввода значения:
"[{key: key1, val:value1}, {key: key2, val:value2}]"
После того, как вы пришли с этим представлением, легко писать простая функция, которая перемещается по вашей SimpleOrderedMap. Например:
JSONArray jarray = new JSONArray(); for(Map.Entry e : simpleOrderedMap) { jarray.put(e.key()); jarray.put(e.value()); }
Простые добавления полей к карте не будет работать, так как сложные объекты (которые не сериализации в JSON) может быть там.
Вот отличный код, который делает это. версия
protected static toMap(entry){
def response
if(entry instanceof SolrDocumentList){
def docs = []
response = [numFound:entry.numFound, maxScore:entry.maxScore, start:entry.start, docs:docs]
entry.each {
docs << toMap(it)
}
} else
if(entry instanceof List){
response = []
entry.each {
response << toMap(it)
}
} else
if(entry instanceof Iterable){
response = [:]
entry.each {
if(it instanceof Map.Entry)
response.put(it.key, toMap(it.value))
else
response.put(entry.hashCode(), toMap(it))
}
} else
if (entry instanceof Map){
response = [:]
entry.each {
if(it instanceof Map.Entry)
response.put(it.key, toMap(it.value))
else
response.put(entry.hashCode(), toMap(it))
}
} else {
response = entry
}
return response
}
Java:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.solr.common.util.NamedList;
public class SolrMapConverter {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Object toMap(Object entry) {
Object response = null;
if (entry instanceof NamedList) {
response = new HashMap<>();
NamedList lst = (NamedList) entry;
for (int i = 0; i < lst.size(); i++) {
((Map) response).put(lst.getName(i), toMap(lst.getVal(i)));
}
} else if (entry instanceof Iterable) {
response = new ArrayList<>();
for (Object e : (Iterable) entry) {
((ArrayList<Object>) response).add(toMap(e));
}
} else if (entry instanceof Map) {
response = new HashMap<>();
for (Entry<String, ?> e : ((Map<String, ?>) entry).entrySet()) {
((Map) response).put(e.getKey(), toMap(e.getValue()));
}
} else {
return entry;
}
return response;
}
}
- 1. Преобразовать строку в JSON объект
- 2. Преобразовать строку в объект JSON
- 3. Преобразовать почти JSON строку JSON объект Javascript
- 4. Преобразовать строку JSON объект C#
- 5. Как преобразовать строку JSON в объект JSON в php?
- 6. Как преобразовать объект JSON в строку base64?
- 7. Как преобразовать JSON строку в объект Java
- 8. Как преобразовать строку в JSON объект
- 9. Как преобразовать строку в объект JSON?
- 10. Как преобразовать объект Java в строку JSON?
- 11. Как преобразовать строку в объект json?
- 12. Как преобразовать строку Java в объект JSON
- 13. IOS - Как преобразовать строку json в объект
- 14. Как преобразовать строку JSON в объект?
- 15. Как преобразовать строку JSON в объект GSON?
- 16. Как преобразовать строку массива в объект json?
- 17. Как преобразовать строку JSON в пользовательский объект?
- 18. Как преобразовать строку json в объект json в php?
- 19. как преобразовать JSON в строку
- 20. Как преобразовать строку JSON в объект JSON с использованием JavaScript?
- 21. Как преобразовать escape-строку JSON в объект JSON?
- 22. Groovy - Преобразовать объект в JSON строку
- 23. Как преобразовать JSON в строку?
- 24. Как преобразовать входную строку в строку json или json-объект с помощью jackson в java
- 25. Как преобразовать объект JavaScript, содержащий JSON строку
- 26. Преобразовать объект Java в Json Строку
- 27. Как преобразовать JSON в массив или строку?
- 28. преобразовать javascript json строку в объект java
- 29. Невозможно преобразовать JSON строку в объект
- 30. преобразовать вложенную строку в объект JSON Javascript