当我使用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)"
我在项目中包含了“ 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; } } }
这是一个简单的程序,没有使用galssfish,为什么在这里提到玻璃鱼?
javax.json-api-1.0.jar仅包含用于编译时依赖的API。但是,如果要运行您的应用程序,则需要一个provider / impl类。
javax.json-api-1.0.jar
provider / impl
org.glassfish:javax.json是您需要的同时包含api+ impl类的jar 。
org.glassfish:javax.json
api
impl
<dependency> <groupId>org.glassfish</groupId> <artifactId>javax.json</artifactId> <version>1.0.4</version> </dependency>
有关更多详细信息,请参见此线程。