Java 为什么 Json 测试程序不起作用?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18282872/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Why Json test program doesn't work?
提问by Frank
When I run a Json test program with jdk 7, it says :
当我使用 jdk 7 运行 Json 测试程序时,它说:
Exception in thread "main" javax.json.JsonException: Provider org.glassfish.json.JsonProviderImpl not found
at javax.json.spi.JsonProvider.provider(JsonProvider.java:97)
at javax.json.Json.createArrayBuilder(Json.java:257)"
I've included "javax.json-api-1.0.jar" in my project.
我在我的项目中包含了“javax.json-api-1.0.jar”。
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class JsonExample
{
public static void main(String[] args)
{
List<User> users=getUsers();
// build JSON
JsonArrayBuilder jsonArrayBuilder=Json.createArrayBuilder();
for (User user : users)
{
jsonArrayBuilder.add(
Json.createObjectBuilder()
.add("id",user.getId())
.add("name",user.getName())
.add("join",user.getJoin().getTime()));
}
JsonArray usersJson=jsonArrayBuilder.build();
System.out.println(usersJson.toString());
}
// dummy users
public static List<User> getUsers()
{
List<User> users=new ArrayList<User>(10);
User user=new User();
user.setId(1);
user.setName("Hero");
user.setJoin(new Date());
users.add(user);
user=new User();
user.setId(2);
user.setName("Citizen");
user.setJoin(new Date());
users.add(user);
return users;
}
// POJO
public static class User implements Serializable
{
private long id;
private String name;
private Date join;
public long getId()
{
return id;
}
public void setId(long id)
{
this.id=id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name=name;
}
public Date getJoin()
{
return join;
}
public void setJoin(Date join)
{
this.join=join;
}
}
}
It's a simple program, not using galssfish, why is glassfish mentioned here ?
这是一个简单的程序,没有使用galssfish,为什么这里提到glassfish?
采纳答案by anubhava
javax.json-api-1.0.jar
contains only API which is there for compile time dependency. But if you want to run your app, you need a provider / impl
classes.
javax.json-api-1.0.jar
仅包含用于编译时依赖的 API。但是如果你想运行你的应用程序,你需要一个provider / impl
类。
org.glassfish:javax.json
is the jar you need that contains both api
+ impl
classes.
org.glassfish:javax.json
是您需要的包含api
+impl
类的 jar 。
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
</dependency>