为什么Json测试程序不起作用? [英] Why Json test program doesn't work?

查看:123
本文介绍了为什么Json测试程序不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用jdk 7运行Json测试程序时,它说:

 线程main中的异常javax.json .JsonException:提供者org.glassfish.json.JsonProviderImpl在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; $ b $ import java.util.Date; $ b $ import java.util.List;

public class JsonExample
{
public static void main(String [] args)
{
List< User> users = getUsers();

//构建JSON
JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder();
(用户用户:用户)
{
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());

}

//虚拟用户
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);

返回用户;
}

// POJO
public static class User实现Serializable
{
private long id;
私人字符串名称;
私人日期加入;

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,为什么在这里提到glassfish?

解决方案

javax.json-api-1.0.jar 只包含那些用于编译时间依赖的API。但是如果你想运行你的应用程序,你需要一个 provider / impl classes。



org.glassfish:javax.json 是你需要的jar包含 api + impl classes。

 <依赖关系> 
< groupId> org.glassfish< / groupId>
< artifactId> javax.json< / artifactId>
< version> 1.0.4< / version>
< /依赖关系>

请参阅此主题了解更多详情


When I run a Json test program with jdk 7, it says :

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.

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 ?

解决方案

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.

org.glassfish:javax.json is the jar you need that contains both api + impl classes.

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.0.4</version>
</dependency>

See this thread for more details.

这篇关于为什么Json测试程序不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆