Я не пробовал gson
для обработки JSON.Я использую Play JSON play.api.libs.json
framework.
В JSON работает ниже:
import play.api.libs.json._
case class MyClass(State: String, `Card No`: String)
// Play can convert any case class into a JsValue, using macros.
// you will need an implicit `Writes` for `MyClass`
implicit private val MyClassWrites = Json.writes[MyClass]
val myobj = MyClass(State = "Bangalore", `Card No` = "Bl@#1234")
val json = Json.toJson(myobj)
println(json)
Дает JSON ниже:
{"State":"Bangalore","Card No":"Bl@#1234"}
Обновлю это, как только я извлечу gson lib.
Обновление: с помощью Gson
Я бы хотел, чтобы у вас не было обратных кавычек для определения значений класса дел, лучше иметь его в стандартном формате - возможно, как верблюжьи дела.Это поможет сохранить код в чистоте.Как показано ниже:
case class MyClassA (state: String, cardNo: String)
и используйте gson FieldNamingPolicy
, чтобы получить правильное форматирование при сборке JSON.Вы можете создать конструктор gson и сделать что-то вроде этого
val status = MyClassA(State = "Bangalore", cardNo = "Bl@#1234")
val gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES)
.setPrettyPrinting().create()
println(gson.toJson(status))
FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES
обеспечит, чтобы первая буква имени поля была заглавной, когда сериализована в ее форму JSON, и слова будут разделены пробелом..
выше создаст JSON ниже.
{
"State": "Bangalore",
"Card No": "Bl@#1234"
}
Кроме того, вы можете использовать аннотацию @SerializedName
для любого имени поля, чтобы указать сериализованное имя.
Использование аннотации Использование SerializedName
, как показано ниже:
case class MyClassA (
State: String,
@(SerializedName @scala.annotation.meta.field)("card no")
cardNo: String
)
Вам необходимо использовать метааннотации в scala.annotation.meta
.См. Это Git Issue