我是一个前端开发人员,对后端开发是全新的。我的任务是在Java对象中建模json。现在我的控制器返回的只是一些模拟数据。
{
"data":{
"objectId":25,
"columnName":[
"myCategory",
"myCategoryId"
],
"columnValues":[
[
"Category One",
1
],
[
"Category Two",
2
],
[
"Category Three",
3
],
[
"Category Four",
4
],
[
"Category Five",
5
]
]
}
}
这是我的尝试。控制器正确地返回了这个json。但这是不是太简单了?我认为应该做的是将列名称和列值数组外推到单独的类中,但我不确定如何进行。
package com.category;
import java.util.List;
public class MyObjectData {
private int objectId;
private List columnName;
private List columnValues;
public int getObjectId() {
return objectId;
}
public void setObjectId(int objectId) {
this.objectId = objectId;
}
public List getColumnName() {
return columnName;
}
public void setColumnName(List colName) {
this.columnName = colName;
}
public List getColumnValues() {
return columnValues;
}
public void setValues(List values) {
this.columnValues = values;
}
}
关于columnNames和ColumnValue,我觉得应该在模型中执行类似的操作:
private List<ColumnNames> columnNames;
private List<ColumnValues> columnValues;
public List<ColumnNames> getColumnNames() {
return columnNames;
}
public void setColumnNames(List<ColumnNames> columnNames) {
this.columnNames = columnNames;
}
public List<ColumnValues> getColumnValues() {
return columnValues;
}
public void setColumnValues(List<ColumnValues> columnValues) {
this.columnValues = columnValues;
}
然后我会给他们上两门课,就像这样:
package com.category;
import java.util.List;
public class ColumnName {
private String columnName;
public String getColumnName() {
return columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
}
package com.category;
import java.util.List;
public class ColumnValue {
private String columnValue;
private int columnValueId;
public String getColumnValue() {
return columnValue;
}
public void setColumnValue(String columnValue) {
this.columnValue = columnValue;
}
public String getColumnValueId() {
return columnValueId;
}
public void setColumnValueId(int columnValueId) {
this.columnValueId = columnValueId;
}
}
我觉得我的作品都很好,但我不确定这是否比我最初的尝试更好。。。这很有效。只是在寻找输入。提前谢谢。
在您的结构中,columnValues实际上是表中有两列的行:
myCategory和
myCategoryId。
更“面向对象”的Java类可以是这样的:
public class MyObjectData {
private int objectId;
private List<MyObjectRow> columnValues; // I would have named this as rows
}
public class MyObjectRow {
private String myCategory;
private String myCategoryId;
}
现在您需要一个自定义序列化程序将其转换为您期望的JSON结构:
public class MyObjectDataSerializer extends StdSerializer<MyObjectData> {
public MyObjectDataSerializer() {
super(MyObjectData.class);
}
public void serialize(MyObjectData value, JsonGenerator generator, SerializerProvider provider) throws IOException {
generator.writeStartObject();
generator.writeNumberField("objectId", value.getObjectId());
generator.writeArrayFieldStart("columnName");
generator.writeString("myCategory");
generator.writeString("myCategoryId");
generator.writeEndArray();
generator.writeArrayFieldStart("columnValues");
for (MyObjectRow row : value.getColumnValues()) {
generator.writeStartArray();
generator.writeString(row.getMyCategory());
generator.writeNumber(row.getMyCategoryId());
generator.writeEndArray();
}
generator.writeEndArray();
generator.writeEndObject();
}
}
注意:您可以使用反射来动态提取字段名和值。
然后可以将MyObjectData对象序列化为所需的形式:
public class MyObjectDataSerializerTest {
@Test
public void shouldCustomSerializeMyObjectData() throws Exception {
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(MyObjectData.class, new MyObjectDataSerializer());
mapper.registerModule(module);
MyObjectData myObjectData = new MyObjectData();
myObjectData.setObjectId(25);
myObjectData.setColumnValues(Arrays.asList(
new MyObjectRow("Category One", 1),
new MyObjectRow("Category Two", 2),
new MyObjectRow("Category Three", 3)
));
String serialized = mapper.writeValueAsString(myObjectData);
assertThat(serialized, equalTo("{\"objectId\":25,\"columnName\":[\"myCategory\",\"myCategoryId\"],\"columnValues\":[[\"Category One\",1],[\"Category Two\",2],[\"Category Three\",3]]}\n"));
}
}
我有一个火花数据框,我需要写入MongoDB。我想知道如何在mongoDB中将数据框的一些列写成嵌套/分层JSON。假设数据框有6列,col1,col2,…… col5,col6我想要col1,col2,col3作为第一层次结构,其余列col4到col6作为第二层次结构。像这样的东西, 我如何在pyspark中实现这一点?
我感兴趣的是用Java创建一个分层tif,使Photoshop能够识别层。我能够创建多页tif,但Photoshop无法将这些页面识别为层。不过,Acrobat可以查看这些页面。谁知道Photoshop是如何存储tif层数据的,以及如何用Java生成这些数据? 谢谢
本文向大家介绍MongoDB 中创建分层JSON,包括了MongoDB 中创建分层JSON的使用技巧和注意事项,需要的朋友参考一下 使用以下语法在MongoDB中创建分层JSON- 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出-
问题内容: 我对用Java创建分层的tif感兴趣,以使Photoshop能够识别这些层。我能够创建多页tif,但是Photoshop无法将页面识别为图层。尽管可以使用Acrobat查看页面。有人知道Photoshop如何存储tif图层数据以及如何用Java生成吗? 谢谢。 问题答案: 我已经为TIFF ImageIO插件进行了研究,据我了解,Photoshop在TIFF中存储图层信息的方式是完全专
问题内容: 我有一个MySQL表,如下所示: 现在,我想有一个简单的MySQL查询,只需向其提供ID [例如说id=19],然后就应该获取其所有子ID [即结果应具有ID ‘20,21,22’]…。 孩子的等级未知;它可能会有所不同.... 我知道如何使用for循环…但是如何使用单个MySQL查询实现相同的目标? 问题答案: 对于MySQL 8+:使用递归with语法。 对于MySQL 5.x:使
我有一个MySQL表,如下所示: 现在,我想有一个MySQL查询,我只需向它提供id(例如),然后我应该获得它的所有子id(即,结果应该有id'20、21、22']... 不知道孩子的等级;它可以变化.... 我知道如何使用循环来实现...但是如何使用单个MySQL查询实现相同的功能呢?