反序列化 Json 数据类型文件
Deserialize Json Datatype File
我正在尝试将 Json 字符串反序列化为自定义 class。
我的 json 是:
externDossierNr:"foo10"
internDossierNr:"2016010"
rapport:File
testarray:Array[3]
testword:42
__proto__:Object
externDossierNr、internDossierNr 和 rapport 是我从表格中获得的数据。
我可以反序列化 externDossierNr 和 internDossierNr。
当我尝试反序列化 rapport 时,它给出了 {}。
然后我在 javascript 中添加了 testarray 和 testword,我也可以阅读它们。
我认为问题出在 JsonType 文件上。
Here 我发现了不同的 Json 数据类型,但文件不是其中之一。
我正在通过 RestAngular 发送我的文件
public save(item: any): any {
item["testword"] = 42;
item["testarray"] = [2,5,9];
console.log("item to save is ", item);
console.log("rapport is ", item["rapport"]);
if (item.id === undefined) {
this.restService.save(this.metadata.apiDomain, item).then((addedItem: any) => {
toastr.success(`${addedItem.naam} successfully created.`, `Overzicht Dossiers Created`);
});
} else {
this.restService.update(this.metadata.apiDomain, item).then((updatedItem: any) => {
toastr.success(`${updatedItem.naam} successfully updated.`, `Overzicht Dossiers Updated`);
});
}
}
对于我的反序列化,我使用了 this 和(来自 sghill 的[this][2] not enough rep)文章
生成以下代码
包裹 be.ugent.lca.data.entities.deserializers;
import be.ugent.lca.data.entities.Dossier;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import java.io.IOException;
public class DossierDeserializer extends JsonDeserializer {
@Override
public Dossier deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException {
ObjectCodec oc = jsonParser.getCodec();
JsonNode root = oc.readTree(jsonParser);
Dossier dossier = new Dossier();
dossier.setExternDossierNr(root.get("externDossierNr").asText());
dossier.setInternDossierNr(root.get("internDossierNr").asText());
System.out.println("Intern Dossier nr is " + root.get("internDossierNr"));
System.out.println("Test word " + root.get("testword"));
System.out.println("Test array " + root.get("testarray"));
JsonNode node = root.get("rapport");
if(node == null){
System.out.println("Rapport is a null pointer.");
}else{
System.out.println("Rapport is " + node + " with size " + node.size());
}
return dossier;
}
}
在什么地方可以找到有关文件 Json 数据类型的更多信息。
我怎样才能发送它以便我可以读取它并反序列化它?
我的假设是错误的,我已经在打印 Json。
我刚刚发布了 javascript 对象。
至于无法发送它是因为尽管我的 html 表格中有 multipart/formdata,但在通过 restangular 发送后它变成了 application/json。
在 this restangular 问题上,我找到了如何将它打包到 Formdata 中。
我正在尝试将 Json 字符串反序列化为自定义 class。 我的 json 是:
externDossierNr:"foo10"
internDossierNr:"2016010"
rapport:File
testarray:Array[3]
testword:42
__proto__:Object
externDossierNr、internDossierNr 和 rapport 是我从表格中获得的数据。 我可以反序列化 externDossierNr 和 internDossierNr。 当我尝试反序列化 rapport 时,它给出了 {}。 然后我在 javascript 中添加了 testarray 和 testword,我也可以阅读它们。
我认为问题出在 JsonType 文件上。 Here 我发现了不同的 Json 数据类型,但文件不是其中之一。
我正在通过 RestAngular 发送我的文件
public save(item: any): any {
item["testword"] = 42;
item["testarray"] = [2,5,9];
console.log("item to save is ", item);
console.log("rapport is ", item["rapport"]);
if (item.id === undefined) {
this.restService.save(this.metadata.apiDomain, item).then((addedItem: any) => {
toastr.success(`${addedItem.naam} successfully created.`, `Overzicht Dossiers Created`);
});
} else {
this.restService.update(this.metadata.apiDomain, item).then((updatedItem: any) => {
toastr.success(`${updatedItem.naam} successfully updated.`, `Overzicht Dossiers Updated`);
});
}
}
对于我的反序列化,我使用了 this 和(来自 sghill 的[this][2] not enough rep)文章
生成以下代码 包裹 be.ugent.lca.data.entities.deserializers;
import be.ugent.lca.data.entities.Dossier;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import java.io.IOException;
public class DossierDeserializer extends JsonDeserializer {
@Override
public Dossier deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException {
ObjectCodec oc = jsonParser.getCodec();
JsonNode root = oc.readTree(jsonParser);
Dossier dossier = new Dossier();
dossier.setExternDossierNr(root.get("externDossierNr").asText());
dossier.setInternDossierNr(root.get("internDossierNr").asText());
System.out.println("Intern Dossier nr is " + root.get("internDossierNr"));
System.out.println("Test word " + root.get("testword"));
System.out.println("Test array " + root.get("testarray"));
JsonNode node = root.get("rapport");
if(node == null){
System.out.println("Rapport is a null pointer.");
}else{
System.out.println("Rapport is " + node + " with size " + node.size());
}
return dossier;
}
}
在什么地方可以找到有关文件 Json 数据类型的更多信息。 我怎样才能发送它以便我可以读取它并反序列化它?
我的假设是错误的,我已经在打印 Json。 我刚刚发布了 javascript 对象。
至于无法发送它是因为尽管我的 html 表格中有 multipart/formdata,但在通过 restangular 发送后它变成了 application/json。
在 this restangular 问题上,我找到了如何将它打包到 Formdata 中。