java - 反序列化 Json 数据类型文件

标签 java angularjs json deserialization restangular

我正在尝试将 Json 字符串反序列化为自定义类。 我的 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 数据类型,但 File 不是其中之一。

我正在通过 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和([this][2] 来自 sghill 没有足够的代表)文章

生成以下代码 包 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;
    }
}

在哪里可以找到有关 File Json 数据类型的更多信息。 我如何发送它以便我可以读取它并反序列化它?

最佳答案

我的假设是错误的,我已经在打印 Json 了。 我只是发布了 javascript 对象。

至于无法发送它是因为尽管我的html表单中有multipart/formdata,但在通过restangular发送它时,它变成了application/json。

关于this我找到了如何将其打包到 Formdata 中。

关于java - 反序列化 Json 数据类型文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37433916/

相关文章:

javascript - 关于使用 Zurb 的 Foundation+AngularJS 的想法?

java - CancelSelection() 后 JFileChooser 不会消失

java - 具有指数条件的大 O/时间复杂度

angularjs - 嵌套 ng-repeat 的 DOM 娱乐性能问题

javascript - AngularJS ng-if 用于加载图像时生成错误

javascript - jmeter修改json GET结果并在PUT中使用

ios - "Ambiguous use of subscript"新 Swift 更新后出错

json - 如何将json数据追加到文件中?

java - strandSort作业,迭代器问题?

java - 当文件丢失或为空时返回 null