Java 如何使用applet转换JSON数据?

Java 如何使用applet转换JSON数据?,java,json,applet,gson,signed,Java,Json,Applet,Gson,Signed,我需要在小程序中转换JSON数据。我正在使用一个签名的小程序。我已经签署了gson-1.4.jar和java类文件,但无法转换JSON数据。请告知样品 代码:--- import com.google.gson.Gson; import java.applet.*; public class MyApplet extends Applet implements Runnable { private Gson JSON; public void init

我需要在小程序中转换JSON数据。我正在使用一个签名的小程序。我已经签署了
gson-1.4.jar
和java类文件,但无法转换JSON数据。请告知样品

代码:---

import com.google.gson.Gson;

import java.applet.*;

  public class MyApplet extends Applet implements Runnable {

        private Gson JSON;

        public void init() {
         JSON = new Gson();
        }

        public void start()
        {
        String json =  "{\"menu\": {\"id\": \"1\", \"value\": \"test\"} }";
        Gson gson = new Gson();
        System.out.println("start");  
        MenuWrapper m = gson.fromJson(json, MenuWrapper.class);
        System.out.println(m.getMenu().getId());
        System.out.println(m.getMenu().getValue());
        System.out.println("end");  
        }

        public void run(){
        }
}

class Menu {

    String id;
    String value;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public String toString() {
        return String.format("id: %s, value: %d", id, value);
    }
}

class MenuWrapper {

    Menu menu;
    public Menu getMenu() { 
        return menu; 
    }
    public void setMenu(Menu m) { 
        menu = m; 
    }
}
未发现错误,输出为“开始”

请告诉我如何解决这个问题。

我会把“签名罐”的事情放在一边。事实上,我会把整个Applet放在一边,专注于JSON转换的内容。因此,首先尝试运行代码,将JSON实际转换为MenuWrapper类。运行它,您将看到以下内容之一:

  • MenuWrapper按预期创建,一切正常 在这种情况下,应该是配置有问题(您应该在java控制台中或在这种情况下观察异常)
  • 转换过程中会引发某种异常。 在这种情况下,请在这里发布,它与applet无关,而是关于JSON和使用GSON的问题

希望这有帮助

这里有类似的问题:


要使反序列化库中的反射正常工作,似乎必须对小程序进行签名。

1)我看不出小程序需要数字签名的原因。你的小程序为什么要签名?2) 不要在帖子中包含“有急事”之类的内容。它不会更快地得到帮助,事实上更可能让你被忽视。3) “没有发现错误,输出为“开始”我理解逗号之前的部分,但是输出为“开始”是什么意思?DYM您在输出中看到“开始”了吗?还有别的吗?4) “很好…有样品。”所以不是代码生成工厂。5) 请在预览中检查代码示例的格式是否符合您的预期。这里有类似的问题和答案,谢谢您的回答。我犯了以下错误。java.security.AccessControlException:java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)java.security.AccessController.checkPermission(AccessController.java:546)java.lang.SecurityManager.checkPermission(SecurityManager.java:532)的访问被拒绝在com.google.gson.MappedObjectConstructor.getNoArgsConstructor(MappedObjectConstructor.java:85)的java.lang.reflect.AccessibleObject.SetAccessibleObject(AccessibleObject.java:74)中,这看起来json转换器无法正常工作。可能您没有默认构造函数或有效的getter/setter。这正是我所说的第二个案例。你应该修复GSON的东西,然后它才会在applet中运行。谢谢。但是,如果我在没有使用applet的情况下运行程序,它将使用相同的json jar文件正常工作……或者应该创建一个policy文件以允许反射工作。