我使用gson来序列化和反序列化。我的目标如下:
OBJECT A:
String myEmail;
int rank;
String msgData;
在上面的例子中,msgData是一个json字符串,所以以上json形式的对象将在两个步骤中反序列化。由于特殊原因,我们必须分两步完成。下面的对象B-将是上面msgData的json。
OBJECT B:
String myName;
int myNumber;
String[] myStrings;
对象B的Json如下:
{
"myName": "TheJumper",
"myNumber": "35",
"myString": [
"abc",
"efg",
"xyz"
]
}
问题:我们如何表示json -对象B;在对象A的json形式中,当对象A被反序列化时,对象B的json可以提取为字符串。
例如:对象A的Json可以表示为(有效的Json):
{
"myEmail": "abc@example.com",
"myRank": "50",
"msgData": "This is a Message"
}
当我尝试以下-它给我一个无效的json错误。
{
"myEmail": "abc@example.com",
"myRank": "50",
"msgData": "{
"myName": "TheJumper",
"myNumber": "35",
"myString": [
"abc",
"efg",
"xyz"
]
}"
}
我尝试过许多事情,但都解决不了。这是怎么做的?
发布于 2015-11-20 06:34:39
我们如何表示json -对象B;在对象A的json形式中,当对象A被反序列化时,对象B的json可以提取为字符串。
您需要用对象OBJECT字符串中的\"
转义所有引号;
{
"myEmail": "abc@example.com",
"myRank": "50",
"msgData": "{
\"myName\": \"TheJumper\",
\"myNumber\": \"35\",
\"myString\": [
\"abc\",
\"efg\",
\"xyz\"
]
}"
}
折叠在一条线上,它看起来像:
{
"myEmail": "abc@example.com",
"myRank": "50",
"msgData": "{ \"myName\": \"TheJumper\", \"myNumber\": \"35\", \"myString\": [ \"abc\", \"efg\", \"xyz\" ] }"
}
但是,更好的方法是编写有效的JSON,然后将其表示形式转换为字符串。这样,你就不用担心逃跑了。例如,您将拥有:
{
"myEmail": "abc@example.com",
"myRank": "50",
"msgData": {
"myName": "TheJumper",
"myNumber": "35",
"myString": [
"abc",
"efg",
"xyz"
]
}
}
然后,当您到达msgData
时,使用GSON将其转换为带有Gson#toJson()
的字符串。
https://stackoverflow.com/questions/33829157
复制相似问题