Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ziqian zhang
Grasscutter
Commits
c6323e97
Commit
c6323e97
authored
Aug 09, 2022
by
AnimeGitB
Committed by
Luke H-W
Aug 11, 2022
Browse files
Funnel all gson calls into helper functions
Add deprecated getGsonFactory for plugin compat until 3.0
parent
76fcbb47
Changes
21
Hide whitespace changes
Inline
Side-by-side
src/main/java/emu/grasscutter/utils/Utils.java
View file @
c6323e97
...
...
@@ -20,12 +20,25 @@ import it.unimi.dsi.fastutil.ints.IntList;
import
org.slf4j.Logger
;
import
com.google.gson.Gson
;
import
com.google.gson.GsonBuilder
;
import
com.google.gson.JsonElement
;
import
com.google.gson.JsonSyntaxException
;
import
com.google.gson.reflect.TypeToken
;
import
javax.annotation.Nullable
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@SuppressWarnings
({
"UnusedReturnValue"
,
"BooleanMethodIsAlwaysInverted"
})
public
final
class
Utils
{
private
static
final
Gson
gson
=
new
GsonBuilder
().
setPrettyPrinting
().
create
();
@Deprecated
(
forRemoval
=
true
)
public
static
Gson
getGsonFactory
()
{
return
gson
;
}
public
static
final
Random
random
=
new
Random
();
public
static
int
randomRange
(
int
min
,
int
max
)
{
...
...
@@ -158,8 +171,7 @@ public final class Utils {
* @param object The object to log.
*/
public
static
void
logObject
(
Object
object
)
{
String
asJson
=
Grasscutter
.
getGsonFactory
().
toJson
(
object
);
Grasscutter
.
getLogger
().
info
(
asJson
);
Grasscutter
.
getLogger
().
info
(
jsonEncode
(
object
));
}
/**
...
...
@@ -357,6 +369,44 @@ public final class Utils {
return
Base64
.
getDecoder
().
decode
(
toDecode
);
}
/*
* Encode an object to a JSON string
*/
public
static
String
jsonEncode
(
Object
object
)
{
return
gson
.
toJson
(
object
);
}
public
static
<
T
>
T
jsonDecode
(
JsonElement
jsonElement
,
Class
<
T
>
classType
)
throws
JsonSyntaxException
{
return
gson
.
fromJson
(
jsonElement
,
classType
);
}
public
static
<
T
>
T
loadJsonToClass
(
InputStreamReader
fileReader
,
Class
<
T
>
classType
)
throws
IOException
{
return
gson
.
fromJson
(
fileReader
,
classType
);
}
public
static
<
T
>
T
loadJsonToClass
(
String
filename
,
Class
<
T
>
classType
)
throws
IOException
{
try
(
InputStreamReader
fileReader
=
new
InputStreamReader
(
new
FileInputStream
(
Utils
.
toFilePath
(
filename
)),
StandardCharsets
.
UTF_8
))
{
return
loadJsonToClass
(
fileReader
,
classType
);
}
}
public
static
<
T
>
List
<
T
>
loadJsonToList
(
InputStreamReader
fileReader
,
Class
<
T
>
classType
)
throws
IOException
{
return
gson
.
fromJson
(
fileReader
,
TypeToken
.
getParameterized
(
List
.
class
,
classType
).
getType
());
}
public
static
<
T
>
List
<
T
>
loadJsonToList
(
String
filename
,
Class
<
T
>
classType
)
throws
IOException
{
try
(
InputStreamReader
fileReader
=
new
InputStreamReader
(
new
FileInputStream
(
Utils
.
toFilePath
(
filename
)),
StandardCharsets
.
UTF_8
))
{
return
loadJsonToList
(
fileReader
,
classType
);
}
}
public
static
<
T1
,
T2
>
Map
<
T1
,
T2
>
loadJsonToMap
(
InputStreamReader
fileReader
,
Class
<
T1
>
keyType
,
Class
<
T2
>
valueType
)
throws
IOException
{
return
gson
.
fromJson
(
fileReader
,
TypeToken
.
getParameterized
(
Map
.
class
,
keyType
,
valueType
).
getType
());
}
public
static
<
T1
,
T2
>
Map
<
T1
,
T2
>
loadJsonToMap
(
String
filename
,
Class
<
T1
>
keyType
,
Class
<
T2
>
valueType
)
throws
IOException
{
try
(
InputStreamReader
fileReader
=
new
InputStreamReader
(
new
FileInputStream
(
Utils
.
toFilePath
(
filename
)),
StandardCharsets
.
UTF_8
))
{
return
loadJsonToMap
(
fileReader
,
keyType
,
valueType
);
}
}
/**
* Safely JSON decodes a given string.
* @param jsonData The JSON-encoded data.
...
...
@@ -364,7 +414,7 @@ public final class Utils {
*/
public
static
<
T
>
T
jsonDecode
(
String
jsonData
,
Class
<
T
>
classType
)
{
try
{
return
Grasscutter
.
getGsonFactory
()
.
fromJson
(
jsonData
,
classType
);
return
gson
.
fromJson
(
jsonData
,
classType
);
}
catch
(
Exception
ignored
)
{
return
null
;
}
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment