首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java不能解析JSON.stringfy生成的JSON

Java不能解析JSON.stringfy生成的JSON
EN

Stack Overflow用户
提问于 2016-06-28 18:33:46
回答 2查看 109关注 0票数 0

在从rc-1升级到rc-3之后,JSON.stringfy()方法将返回值,每个值的起始和结束都是\

代码语言:javascript
复制
{
    \"perfil\":\"CLIENTE\", ...
}

我该怎么解决这个问题?

代码片段:

代码语言:javascript
复制
post(url, data) {
    console.log(JSON.stringify(data));
    return Observable.create(observer =>
        this.http.post(this.restConfig.baseUrl + url, JSON.stringify(data), {
            headers: this.getDefaultHeaders()
        }).subscribe(
            data => this.next(observer, data)
            , err => {
                console.log(err);
                if (err.status === 401) {
                    this.redirectAuth();
                }
                observer.error(err);
            }
        )
    );
}

我的Java RESTful服务无法解析输出:

代码语言:javascript
复制
Unexpected token (VALUE_STRING), expected FIELD_NAME: missing property 'perfil' that is to contain type id  (for class br.com.inbit.medipop.model.entities.impl.Cliente) at [Source: java.io.ByteArrayInputStream@79f844cf; line: 1, column: 1]

班级客户:

代码语言:javascript
复制
@Table
@Entity
@DiscriminatorValue("CLIENTE")
public class Cliente extends Usuario {

}

Usuario级:

代码语言:javascript
复制
@Table
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "perfil", discriminatorType = DiscriminatorType.STRING)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "perfil")
@JsonSubTypes({
    @JsonSubTypes.Type(value = Administrador.class, name = "ADMIN"),
    @JsonSubTypes.Type(value = Colaborador.class, name = "COLABORADOR"),
    @JsonSubTypes.Type(value = Parceiro.class, name = "PARCEIRO"),
    @JsonSubTypes.Type(value = Cliente.class, name = "CLIENTE"),
    @JsonSubTypes.Type(value = Dependente.class, name = "DEPENDENTE")
})
public abstract class Usuario {

    @NotNull
    @Enumerated(EnumType.STRING)
    @Column(insertable = false, updatable = false)
    protected PerfilUsuario perfil;

    ...
}

stringfy前的数据

代码语言:javascript
复制
{"perfil":"CLIENTE","pessoa":{"tipo":"FISICA","sexo":"MASCULINO","nome":"Marcos Kichel","cpf":"911.111.064-36","rg":"1234"},"dependentes":[],"email":"anackichel@gmail.com"}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-28 19:08:19

似乎你在把已经紧张的东西串起来。拿出JSON.stringify(),你就可以走了。

票数 1
EN

Stack Overflow用户

发布于 2016-06-28 19:01:42

这里的问题实际上不是由转义引号引起的,而是由perfil字段的错误数据类型引起的。在您的java代码中,它应该是一个对象,而在json中,则传递字符串值"CLIENTE"

因此,要么确保在"perfil“字段中发送对象,要么将perfil字段的类型从PerfilUsuario更改为String。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38083780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档