Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Gson从主Json字符串获取内部Json字符串数据_Java_Json_String_Gson - Fatal编程技术网

Java 使用Gson从主Json字符串获取内部Json字符串数据

Java 使用Gson从主Json字符串获取内部Json字符串数据,java,json,string,gson,Java,Json,String,Gson,我正在使用Gson解析Json字符串中的数据。一切正常。 但是现在,MainJson字符串包含内部的Json字符串,我想要内部的Json字符串的数据。如何获得它? 检查我的Json字符串: [{"Question":"Are you inclined to:","QId":"2","Options":[{"Option":"Argue or debate issues","OptionId":"4"},{"Option":"Avoid arguments","OptionId":"5"},{"O

我正在使用
Gson
解析Json字符串中的数据。一切正常。
但是现在,Main
Json字符串
包含内部的Json字符串,我想要内部的
Json字符串
的数据。如何获得它?

检查我的
Json字符串

[{"Question":"Are you inclined to:","QId":"2","Options":[{"Option":"Argue or debate issues","OptionId":"4"},{"Option":"Avoid arguments","OptionId":"5"},{"Option":"Swutch topics","OptionId":"6"}]}]
    PrimaryTest[] testlist = gson.fromJson(result, PrimaryTest[].class); // result is Json String.
    List<PrimaryTest> lstTest = Arrays.asList(testlist);
    PrimaryTest objTest = lstTest.get(0);
    String Question = objTest.getQuestion();
public class PrimaryTest {

    private String Question;

    public PrimaryTest(String Question) {
        this.Question = Question;
    }

    public void setQuestion(String Question) {
        this.Question = Question;
    }

    public String getQuestion() {
        return this.Question;
    }
}
这里,我想要“选项”的值。

我的示例代码如下:

[{"Question":"Are you inclined to:","QId":"2","Options":[{"Option":"Argue or debate issues","OptionId":"4"},{"Option":"Avoid arguments","OptionId":"5"},{"Option":"Swutch topics","OptionId":"6"}]}]
    PrimaryTest[] testlist = gson.fromJson(result, PrimaryTest[].class); // result is Json String.
    List<PrimaryTest> lstTest = Arrays.asList(testlist);
    PrimaryTest objTest = lstTest.get(0);
    String Question = objTest.getQuestion();
public class PrimaryTest {

    private String Question;

    public PrimaryTest(String Question) {
        this.Question = Question;
    }

    public void setQuestion(String Question) {
        this.Question = Question;
    }

    public String getQuestion() {
        return this.Question;
    }
}

提示对象可以是什么样子的

OptionClass{
String Option 
int/long OptionId
}

QuestionClass{
String Question
int/long QId
Collection<OptionClass> Options
}
OptionClass{
字符串选项
int/long选项ID
}
问题类{
字符串问题
int/long-QId
收集选项
}

注意:这不是一个java类。根据提示设计类。

编写包含JSON字符串包含的参数的类,以便直接将字符串解析为类对象。
您的
PrimaryTest
类应包含以下成员:

public class PrimaryTest {  
    private String Question;  
    private int QId;  
    private List<Option> Options;  

    //Getter and Setter methods here
}  
现在将JSON字符串解析为
PrimaryTest
类,并从类的getter方法获取
选项列表

以下是测试代码:

PrimaryTest[] response = gson.fromJson(json, PrimaryTest[].class);
List<PrimaryTest> lstTest = Arrays.asList(response);
PrimaryTest objTest = lstTest.get(0);

List<Option> options = objTest.getOptions();
for(Option option : options){
    System.out.println(option.getOption());
}
PrimaryTest[]response=gson.fromJson(json,PrimaryTest[].class);
List lstest=Arrays.asList(响应);
PrimaryTest objTest=lstest.get(0);
List options=objTest.getOptions();
用于(选项:选项){
System.out.println(option.getOption());
}

请添加PriamryTest类的代码(该类的实例应从json字符串反序列化)@ShmilTheCat,检查更新后的帖子。“选项”位于数组内的对象内。访问数组元素(列表)以获取对象(映射),然后提取“选项”,这将是一个对象(映射)。不能将其提取为字符串。如果需要字符串,请通过JSON编码器运行对象/映射。(为这件事麻烦波乔真是太傻了——他们只会碍事。)@HotLicks,你能给我举个例子吗?你是说为你写代码?我在上面清楚地描述了它<代码>列表=解析(jsonString);Map map1=列表[0];Map map2=map1.get(“选项”);字符串innerJson=serialize(map2)只需替换所选解析器使用的方法和类型即可。是的,这是一个完美的解决方案。我已经解决了我的问题。