网友通过本文主要向大家介绍了moshi,moshi monsters,moshimonsters.com,moshi monster,moshi iglaze等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
一个现代化的JSON库Moshi针对Android和Java,jsonandroid
Moshi
是一个现代化的JSON库针对Android和Java。它可以很容易地解析JSON成Java对象:
String json = ...;
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<BlackjackHand> jsonAdapter = moshi.adapter(BlackjackHand.class);
BlackjackHand blackjackHand = jsonAdapter.fromJson(json);
System.out.println(blackjackHand);
它可以很容易地Java对象序列为JSON:
BlackjackHand blackjackHand = new BlackjackHand(
new Card('6', SPADES),
Arrays.asList(new Card('4', CLUBS), new Card('A', HEARTS)));
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<BlackjackHand> jsonAdapter = moshi.adapter(BlackjackHand.class);
String json = jsonAdapter.toJson(blackjackHand);
System.out.println(json);
内置型适配器
莫西已经内置了支持读取和写入Java的核心数据类型:
- 原语(整型,浮点,焦炭......)及其同行盒装(整数,浮点数,字符...)。
- 数组,集合,列表,集合和地图
- 字符串
- 枚举
它通过写出来场逐场支持你的模型类。在上面的莫希例子使用这些类:
class BlackjackHand {
public final Card hidden_card;
public final List<Card> visible_cards;
...
}
class Card {
public final char rank;
public final Suit suit;
...
}
enum Suit {
CLUBS, DIAMONDS, HEARTS, SPADES;
}
读写此JSON:
{
"hidden_card": {
"rank": "6",
"suit": "SPADES"
},
"visible_cards": [
{
"rank": "4",
"suit": "CLUBS"
},
{
"rank": "A",
"suit": "HEARTS"
}
]
}
该Javadoc中编目完整的莫西API,我们将在下面探讨。
自定义类型的适配器
随着磨石,这是特别容易定制值的转换方式,并从JSON。A型适配器是有注释的方法,任何类@ToJson
和@FromJson
。
例如,磨石的一张扑克牌的默认编码为详细:JSON的定义在不同领域的点数和花色:{“等级”:“A”,“套装”:“心”}
。随着类型的适配器,我们可以改变编码的东西更紧凑:“4H”
为心中的四,“JD”
为钻石插孔:
class CardAdapter {
@ToJson String toJson(Card card) {
return card.rank + card.suit.name().substring(0, 1);
}
@FromJson Card fromJson(String card) {
if (card.length() != 2) throw new JsonDataException("Unknown card: " + card);
char rank = card.charAt(0);
switch (card.charAt(1)) {
case 'C': return new Card(rank, Suit.CLUBS);
case 'D': return new Card(rank, Suit.DIAMONDS);
case 'H