Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中删除JSON额外行?_Java_Json - Fatal编程技术网

如何在Java中删除JSON额外行?

如何在Java中删除JSON额外行?,java,json,Java,Json,我正在尝试将json发布到服务器。但是json出了点问题。JSON包含“id”和“record_id”,但我没有设置2的值。如何将其从json中删除 final Record rec = new Record(); rec.setAccountbook(bookCid); rec.setUser(pref.getString(Constants.USER_ID, "")); rec.setCreatedAt(currentDateandTime); rec.setRecordType(Inte

我正在尝试将json发布到服务器。但是json出了点问题。JSON包含“id”和“record_id”,但我没有设置2的值。如何将其从json中删除

final Record rec = new Record();

rec.setAccountbook(bookCid);
rec.setUser(pref.getString(Constants.USER_ID, ""));
rec.setCreatedAt(currentDateandTime);
rec.setRecordType(Integer.toString(valtype));
rec.setRemark(strremark);
rec.setAmount(Double.toString(dbamount));
rec.setAsset(strasset);
rec.setCategory(type);

//I didn't set this 2, but this 2 show in the json
//rec.setId(1);
//rec.setRecord_id(1); 

String json = new Gson().toJson(rec);
Log.d("JSON_MSG",""+json);
结果

D/JSON_MSG:
{  
    "accountbook":"04e19a16-ea72-43da-b2b8-fe388ec56fd4",
    "amount":"522.0",
    "asset":"Cash",
    "category":"吃喝",
    "createdAt":"2018-12-19",
    "id":0,
    "recordType":"1",
    "record_id":0,
    "remark":"",
    "user":"43"
}
Java:记录类

private int id;
private int record_id;
private String cid, amount, accountbook, asset, createdAt, recordType, remark, category, user;
private String record_cid, record_amount, record_category, record_book, record_type, record_remark, record_createdAt, record_asset, record_user;

//Declare Constructor
public Record(String amount, String accountbook, String asset, String createdAt, String recordType, String remark, String category, String user) {
    this.amount = amount;
    this.accountbook = accountbook;
    this.asset = asset;
    this.createdAt = createdAt;
    this.recordType = recordType;
    this.remark = remark;
    this.category = category;
    this.user = user;
}

//All the setter & getter

在id字段上使用transient关键字。java中的transient修饰符可应用于类的字段成员,以关闭这些字段成员上的序列化。标记为瞬态的每个字段都不会序列化

链接中的瞬态研究

比如说,

private transient int id;
private int record_id;
private String cid, amount, accountbook, asset, createdAt, recordType, remark, category, user;
private String record_cid, record_amount, record_category, record_book, record_type, record_remark, record_createdAt, record_asset, record_user;

//Declare Constructor
public Record(String amount, String accountbook, String asset, String createdAt, String recordType, String remark, String category, String user) {
    this.amount = amount;
    this.accountbook = accountbook;
    this.asset = asset;
    this.createdAt = createdAt;
    this.recordType = recordType;
    this.remark = remark;
    this.category = category;
    this.user = user;
}

需要在字段上添加@JsonIgnore注释

@杰索尼奥雷

私有int-id

您是否也有toString方法?是,但不包括id和record\u id。您是希望这两个字段具有正确的值,还是完全忽略这些字段?