7

我收到以下错误 - 我在依赖项中添加了 GSon -

有人可以指出我做错了什么吗?

在此处输入图像描述

编辑:指定的依赖项-

   <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>1.7.1</version>
    </dependency>

我在我的 sevlet 中使用以下代码 -

 JSONService json = new JSONService();
    String json_output = json.makeLoginJSON(user);

makeLoginJSON ---

   public String makeLoginJSON(LoginDetails user) {
    String FinalJson = null;
    Gson gson = new Gson();
    FinalJson = gson.toJson(user);      
    return FinalJson;       
}
4

4 回答 4

18

尝试:

<dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
</dependency>

我已经编辑了我的评论并添加了范围。默认范围是compile,这意味着在运行时不存在依赖项。为此,您使用提供的范围。更多关于 Apache 的Maven 依赖项简介的 Maven 依赖项中的范围。

希望这能解决您的问题。

PS:如果你正在创建自己的存储库,你也应该看看这里

于 2012-07-09T20:57:20.923 回答
3

只是对 Raul 的回答的澄清 - 它对您有用,但提供的是预期可从 JRE/JDK 获得的依赖项,即 servlet 类。编译是默认设置,应该在其他人的情况下工作,因为 gson 不能从 JRE 获得,而是需要由 maven 下载。从http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

compile 这是默认范围,如果没有指定,则使用。编译依赖项在项目的所有类路径中都可用。此外,这些依赖关系会传播到依赖项目。

提供 这很像编译,但表示您希望 JDK 或容器在运行时提供依赖项。例如,在为 Java Enterprise Edition 构建 Web 应用程序时,您可以将 Servlet API 和相关 Java EE API 的依赖设置为提供的范围,因为 Web 容器提供了这些类。此范围仅在编译和测试类路径上可用,并且不可传递。

运行时 这个范围表示编译不需要依赖,但执行。它在运行时和测试类路径中,但不在编译类路径中。

test 这个范围表示应用程序的正常使用不需要依赖,只在测试编译和执行阶段可用。

system 此范围类似于提供的范围,只是您必须提供明确包含它的 JAR。工件始终可用,不会在存储库中查找。

import(仅在 Maven 2.0.9 或更高版本中可用)此范围仅用于该部分中 pom 类型的依赖项。它指示应将指定的 POM 替换为该 POM 部分中的依赖项。由于它们被替换,具有导入范围的依赖项实际上并不参与限制依赖项的传递性。

于 2013-08-20T00:31:24.610 回答
-2

添加这些导入:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
于 2020-09-16T03:26:38.770 回答
-3

尝试:

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.1.21</version>
</dependency>

非常快,使用简单。

VO obj = ...;
String jsonString = JSON.toJSONString(obj);

VO obj2 = JSON.parseObject(jsonString, VO.class);
于 2012-07-09T23:02:46.297 回答