小编use*_*SSR的帖子

Java - 字段名称的别名

说我有一个对象:

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.

java gson

19
推荐指数
1
解决办法
1万
查看次数

如何在反序列化对象中保留字段的默认值?

我的情况如下:对象TableC有4个字段.只从JSON字符串中读取3个字段(field_C1,field_C2field_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)

java json gson

6
推荐指数
1
解决办法
2425
查看次数

标签 统计

gson ×2

java ×2

json ×1