Groovy 전환 JSON 및 생산 JSON
8607 단어 groovy
1. JsonSlurper
Json Slurper라는 클래스는 JSON 텍스트를 변환하거나 Groovy 데이터 구조에서 맵,list, 그리고 일부 기본적인 데이터 형식인 Integer, Double,Boolean,String을 읽는 데 사용됩니다.
이 클래스에는 일련의 다시 불러오는 Parse 방법과 특수한 방법이 있습니다. 예를 들어parseText,parseFile.다음 이직은parseText 사용을 예로 삼아 JSON 문자열을list와 맵 대상으로 변환합니다.다른 Parse의 시작 방법은 이와 유사하지만 매개 변수가 다를 뿐입니다.
import groovy.json.JsonSlurper
class ParseJson_01 {
static main(args) {
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText('{ "name": "John Doe"} ')
assert object instanceof Map
assert object.name == 'John Doe'
}
}
Json Slurper는 맵 지원을 제외하고 JSON 데이터를lists로 바꿉니다.
import groovy.json.JsonSlurper
class ParseJson_02 {
static main(args) {
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText('{ "myList": [4, 8, 15, 16, 23, 42] }')
assert object instanceof Map
assert object.myList instanceof List
assert object.myList == [4, 8, 15, 16, 23, 42]
}
}
JSON이 지원하는 표준 원시 데이터 형식:string,number,object,true,false,null.Json Slurper는 이것들을 상응하는 Groovy 유형으로 해석한다.
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText '''
{ "simple": 123,
"fraction": 123.66,
"exponential": 123e12
}'''
assert object instanceof Map
assert object.simple.class == Integer
assert object.fraction.class == BigDecimal
As JsonSlurper is returning pure Groovy object instances without any special JSON classes in the back, its usage is transparent. In fact, JsonSlurper results conform to GPath expressions. GPath is a powerful expression language that is supported by multiple slurpers for different data formats (XmlSlurper for XML being one example).
For more details please have a look at the section on GPath expressions .
Json
groovy에 대응하는 데이터 형식
JSON
Groovy
string
java.lang.String
number
java.lang.BigDecimal or java.lang.Integer
object
java.util.LinkedHashMap
array
java.util.ArrayList
true
true
false
false
null
null
date
java.util.Date based on the yyyy-MM-dd'T'HH:mm:ssZ date format
Whenever a value in JSON is null, JsonSlurper supplements it with the Groovy null value. This is in contrast to other JSON parsers that represent a null value with a library-provided singleton object.
1.1. Parser Variants
JsonSlurper comes with a couple of parser implementations. Each parser fits different requirements, it could well be that for certain scenarios the JsonSlurper default parser is not the best bet for all situations. Here is an overview of the shipped parser implementations:
The default parser implementation for JsonSlurper is JsonParserCharArray. The JsonParserType enumeration contains constants for the parser implementations described above:
Implementation
Constant
JsonParserCharArray
JsonParserType#CHAR_BUFFER
JsonFastParser
JsonParserType#INDEX_OVERLAY
JsonParserLax
JsonParserType#LAX
JsonParserUsingCharacterSource
JsonParserType#CHARACTER_SOURCE
Changing the parser implementation is as easy as setting the JsonParserType with a call to JsonSlurper#setType().
def jsonSlurper = new JsonSlurper(type: JsonParserType.INDEX_OVERLAY)
def object = jsonSlurper.parseText('{ "myList": [4, 8, 15, 16, 23, 42] }')
assert object instanceof Map
assert object.myList instanceof List
assert object.myList == [4, 8, 15, 16, 23, 42]
2. JsonOutput
JsonOutput is responsible for serialising Groovy objects into JSON strings. It can be seen as companion object to JsonSlurper , being a JSON parser.
JsonOutput comes with overloaded, static toJson methods. Each toJson implementation takes a different parameter type. The static method can either be used directly or by importing the methods with a static import statement.
The result of a toJson call is a String containing the JSON code.
def json = JsonOutput.toJson([name: 'John Doe', age: 42])
assert json == '{"name":"John Doe","age":42}'
JsonOutput does not only support primitive, maps or list data types to be serialized to JSON, it goes further and even has support for serialising POGOs, that is, plain-old Groovy objects.
class Person { String name }
def json = JsonOutput.toJson([ new Person(name: 'John'), new Person(name: 'Max') ])
assert json == '[{"name":"John"},{"name":"Max"}]'
As we saw in previous examples, the JSON output is not pretty printed per default. However, the prettyPrint method in JsonSlurper comes to rescue for this task.
def json = JsonOutput.toJson([name: 'John Doe', age: 42])
assert json == '{"name":"John Doe","age":42}'
assert JsonOutput.prettyPrint(json) == '''\
{
"name": "John Doe",
"age": 42
}'''.stripIndent()
prettyPrint takes a String as single parameter. It must not be used in conjunction with the other JsonOutput methods, it can be applied on arbitrary JSON String instances.
Another way to create JSON from Groovy is to use the JsonBuilder or StreamingJsonBuilder. Both builders provide a DSL which allows to formulate an object graph which is then converted to JSON at some point.
For more details on builders, have a look at the builders chapter which covers both JSON builders in great depth.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android Build.Gradle 설명 🌟Gradle은 Android 애플리케이션의 개발 단계를 자동화하는 빌드 시스템입니다. Gradle 시스템에서 Java 플랫폼용 코드를 작성하는 동안 우리는 매우 간단한 언어인 Groovy 프로그래밍 언어를 사용합니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.