#3556: Deserialize arrays to single components

This commit is contained in:
md_5 2023-10-29 11:30:54 +11:00
parent e442c3da5c
commit c92581d0dc
No known key found for this signature in database
GPG Key ID: E8E901AC7C617C11

View File

@ -2,6 +2,7 @@ package net.md_5.bungee.chat;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
@ -77,13 +78,12 @@ public class ComponentSerializer implements JsonDeserializer<BaseComponent>
}
/**
* Deserialize a JSON-compliant String as a single component. The input is
* expected to be a JSON object that represents only one component.
* Deserialize a JSON-compliant String as a single component.
*
* @param json the component json to parse
* @return the deserialized component
* @throws IllegalArgumentException if anything other than a JSON object is
* passed as input
* @throws IllegalArgumentException if anything other than a valid JSON
* component string is passed as input
*/
public static BaseComponent deserialize(String json)
{
@ -93,13 +93,12 @@ public class ComponentSerializer implements JsonDeserializer<BaseComponent>
}
/**
* Deserialize a JSON element as a single component. The input is expected
* to be a JSON object that represents only one component.
* Deserialize a JSON element as a single component.
*
* @param jsonElement the component json to parse
* @return the deserialized component
* @throws IllegalArgumentException if anything other than a JSON object is
* passed as input
* @throws IllegalArgumentException if anything other than a valid JSON
* component is passed as input
*/
public static BaseComponent deserialize(JsonElement jsonElement)
{
@ -110,11 +109,10 @@ public class ComponentSerializer implements JsonDeserializer<BaseComponent>
{
return new TextComponent( primitive.getAsString() );
}
}
if ( !jsonElement.isJsonObject() )
} else if ( jsonElement instanceof JsonArray )
{
throw new IllegalArgumentException( "Malformatted JSON. Expected object, got array for input \"" + jsonElement + "\"." );
BaseComponent[] array = gson.fromJson( jsonElement, BaseComponent[].class );
return TextComponent.fromArray( array );
}
return gson.fromJson( jsonElement, BaseComponent.class );