说我有一个对象:
Object A
String field1 = "abc";
String field2 = "xyz";
Run Code Online (Sandbox Code Playgroud)
上面的json是:
{
"ObjectA": {
"field1": "abc",
"field2": "xyz"
}
}
Run Code Online (Sandbox Code Playgroud)
在发送json之前,我试图为字段名称创建一个新的id.例如,"field1"被称为"f1","field2"被称为"f2".所以预期的输出json如下所示:
{
"ObjectA": {
"f1": "abc",
"f2": "xyz"
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做.以上可以用干净的方式完成吗?感谢您的帮助和指点.
我正在使用gson.
我的情况如下:对象TableC有4个字段.只从JSON字符串中读取3个字段(field_C1,field_C2和field_C3).第四个字段field_C4在对象中使用默认值定义.
当我序列化对象实例(用于输出) - 它忽略该字段时field_C4,我期望默认值为"1"或"null".当我为程序中的实例字段显式定义一个值时"NEW",它确实将它包含在Json输出字符串中.
查看输出,在反序列化期间创建对象实例时,看起来好像也忽略了构造函数.
激活对象实例的其他字段的最佳做法是什么 - 它们不包含在输入Json String的反序列化版本中?
package newpackage;
import java.util.List;
import com.google.gson.*;
public class jsonwithconstructor {
public static void main(String[] args) throws ClassNotFoundException {
String jsonstring = "{'TableC':["
+ "{'field_C1':'C_11','field_C2':'C_12','field_C3':'C_13'},"
+ "{'field_C1':'C_21','field_C2':'C_22','field_C3':'C_23'}"
+ "]}";
jsonstring = jsonstring.replace('\'', '"');
System.out.println(jsonstring);
RootObject root = new GsonBuilder().create().fromJson(jsonstring, RootObject.class);
for (int i=0; i < root.TableC.size(); i++){
System.out.println(root.TableC.get(i));
}
System.out.println();
//root.TableC.get(0).field_C4 = "NEW";
for …Run Code Online (Sandbox Code Playgroud)