Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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 无法使用gson.fromJson反序列化对象_Java_Json_Gson - Fatal编程技术网

Java 无法使用gson.fromJson反序列化对象

Java 无法使用gson.fromJson反序列化对象,java,json,gson,Java,Json,Gson,我正在尝试使用gson.fromJson反序列化postman发送的对象 @POST @Path( "company" ) // takes name as a path parameter @Produces( "application/json" ) // response formatted as JSON public Response insertCompany(String content) { Gson gson = new Gson();

我正在尝试使用gson.fromJson反序列化postman发送的对象

 @POST
    @Path( "company" ) // takes name as a path parameter
    @Produces( "application/json" ) // response formatted as JSON
    public Response insertCompany(String content) {
        Gson gson = new Gson();
        CompanyWithNoIdReturn newCompany = gson.fromJson(content,  CompanyWithNoIdReturn.class);
   }

public class CompanyWithNoIdReturn {

     private final String name;
     private final String description;
     private final String logo;

    public CompanyWithNoIdReturn(String name, String description, String logo) 
    {
        this.name = name;
        this.description = description;
        this.logo = logo;
    }

    public String getName() {

        return name;
    }

    public String getDescription() {

        return description;
    }

    public String getLogo() {

        return logo;
    }

}
出现的错误是:javax.servlet.ServletException:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:应为BEGIN_对象,但为字符串 在第1行第1列

我理解这意味着它希望它以
{
开始,而不是中提到的
。尽管我不理解的是如何修复它

json的构造如下:

编辑:使用表单-数据时,内容如下:

content = (java.lang.String) "------WebKitFormBoundaryUG5yy1gW9G2V5qcz
Content-Disposition: form-data; name="CompanyName"

newCompanyName2
------WebKitFormBoundaryUG5yy1gW9G2V5qcz
Content-Disposition: form-data; name="Description"

newDescription2
------WebKitFormBoundaryUG5yy1gW9G2V5qcz
Content-Disposition: form-data; name="logo"

newLogo2
------WebKitFormBoundaryUG5yy1gW9G2V5qcz--
"
我想您希望body(content变量)是JSON格式的。但根据您的邮递员图像,您正在发送
表单数据

尝试切换到
raw
并插入以下内容:

{
    "name": "Company name",
    "description": "Company description",
    "logo": "logo"
}
我想您希望body(content变量)是JSON格式的。但根据您的邮递员图像,您正在发送
表单数据

尝试切换到
raw
并插入以下内容:

{
    "name": "Company name",
    "description": "Company description",
    "logo": "logo"
}

如果您想使用JaxRs服务处理表单数据,您应该查看

@POST
@Path( "company" ) // takes name as a path parameter
@Produces( "application/json" ) // response formatted as JSON
public Response insertCompany(@FormParam("CompanyName") String name, @FormParam("Description") String description, @FormParam("Logo") String logo) ) {
    CompanyWithNoIdReturn newCompany = new CompanyWithNoIdReturn(name, description, logo);
    return Response.ok(newCompany).build();
}

您必须确保FormParam注释中指定的名称与表单中的字段名匹配。

如果您想使用JaxRs服务处理表单数据,您应该查看。您的服务将成为

@POST
@Path( "company" ) // takes name as a path parameter
@Produces( "application/json" ) // response formatted as JSON
public Response insertCompany(@FormParam("CompanyName") String name, @FormParam("Description") String description, @FormParam("Logo") String logo) ) {
    CompanyWithNoIdReturn newCompany = new CompanyWithNoIdReturn(name, description, logo);
    return Response.ok(newCompany).build();
}

您必须确保FormParam注释中指定的名称与表单中的字段名匹配。

您的输入JSON在哪里?@Amila我添加了一个邮递员的图像\您的输入JSON在哪里?@Amila我添加了一个邮递员的图像\您是正确的。它工作正常。不过,如果我想让它与表单数据或xxx www form urlenc一起使用,它也可以oded这是怎么做到的?如果你使用的是框架,就有必要研究文档。它应该有类。但我不知道你在使用什么,也不能推荐任何东西。但是在
表单数据的情况下,你的
内容应该类似于“name=a&description=b&logo=c”"您可以使用
String
类来解析它。虽然我不理解,但我没有使用任何框架。如果我像在初始问题中那样使用代码,它会产生错误,因为它需要一个对象而不是字符串。您能像我在初始问题中编写的那样编写处理数据的代码吗?发布
内容的值iableYou是正确的。它工作得很好。但是如果我想让它与表单数据或xxx www form urlencoded一起工作,怎么做呢?如果你使用的是框架,就有必要查看文档。它应该有类。但是我不知道你在用什么,也不能推荐任何东西。但是如果是
表单数据
你的
内容
应类似于“名称=a&description=b&logo=c”您可以使用
String
类来解析它。虽然我不理解,但我没有使用任何框架。如果我像在初始问题中那样使用代码,它会产生错误,因为它需要一个对象而不是字符串。您能像我在初始问题中编写的那样编写处理数据的代码吗?发布
内容的值可靠的