Android 从XML中提取JSON

Android 从XML中提取JSON,android,json,xml-parsing,Android,Json,Xml Parsing,我是android初学者,请帮助我,我想从xml解析字符串中提取json数组,如下所示: <?xml version="1.0" encoding="UTF-8"?> <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> [{"id":3033,"type":"cpt4","description":"New Patient Office Visit for Moderate to Se

我是android初学者,请帮助我,我想从xml解析字符串中提取json数组,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
[{"id":3033,"type":"cpt4","description":"New Patient Office Visit  for Moderate to Severe problems- Requiring Longer Visit","category":"Office Visits","subCategory":"Illness Related Visits","inNetwork":195.99,"outNetwork":424.06,"code":"99205","zip":"90210","lastupdated":"2012-02-13T00:00:00.000-05:00"}]
</string>

[{“id”:3033,“类型”:“cpt4”,“描述”:“中重度问题的新患者就诊-需要更长时间就诊”,“类别”:“就诊”,“子类别”:“疾病相关就诊”,“内部网络”:195.99,“outNetwork”:424.06,“代码”:“99205”,“邮政编码”:“90210”,“最新更新”:“2012-02-13T00:00:00.000-05:00”}]
如何在android中从上面的字符串中获取json字符串,请帮助我。

以下是解决方案

  • 从上面的链接下载GSONjar,将其添加到构建路径中
在这里,我试图解析xml以获取json字符串,然后解析json以从中获取必要的元素

String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
        + "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">"
        + "[{\"id\":3033,\"type\":\"cpt4\",\"description\":\"New Patient Office Visit  for Moderate to Severe problems- "
        + "Requiring Longer Visit\",\"category\":\"Office Visits\",\"subCategory\":\"Illness Related Visits\","
        + "\"inNetwork\":195.99,\"outNetwork\":424.06,\"code\":\"99205\",\"zip\":\"90210\",\"lastupdated\":\"2012-02-13T00:00:00.000-05:00\"}]"
        + "</string>";

Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
    DocumentBuilder db = dbf.newDocumentBuilder();
    InputSource is = new InputSource();
    is.setCharacterStream(new StringReader(xml));
    doc = db.parse(is);
} catch (Exception e) {
    e.printStackTrace();
}

doc.getDocumentElement().normalize();
String text = doc.getDocumentElement().getTextContent();
System.out.println(text);

try {
    // testing whether the json string is valid or not
    JsonParser jsonParser = new JsonParser();
    JsonElement jsonElement = jsonParser.parse(text);
    System.out.println("Valid JSon");

    System.out.println("isArray : " + jsonElement.isJsonArray());

    JsonArray jsonArray = jsonElement.getAsJsonArray();
    JsonObject jsonObject = jsonArray.get(0).getAsJsonObject();
    System.out.println("id : " + jsonObject.get("id"));
    System.out.println("type : " + jsonObject.get("type"));
    System.out
            .println("description : " + jsonObject.get("description"));
    System.out.println("category : " + jsonObject.get("category"));
    System.out
            .println("subCategory : " + jsonObject.get("subCategory"));
    System.out.println("inNetwork : " + jsonObject.get("inNetwork"));
    System.out.println("outNetwork : " + jsonObject.get("outNetwork"));
    System.out.println("code : " + jsonObject.get("code"));
    System.out.println("zip : " + jsonObject.get("zip"));
    System.out
            .println("lastupdated : " + jsonObject.get("lastupdated"));

} catch (JsonSyntaxException e2) {
    // TODO Auto-generated catch block
    e2.printStackTrace();
}       
String xml=“”
+ ""
+“[{\'id\':3033,\'type\':\'cpt4\',\'description\':\'针对中重度问题的新患者门诊就诊-
+“需要更长时间的就诊\”,“类别\:”办公室就诊\“,”子类别\“:”疾病相关就诊\“,”
+“\'inNetwork\':195.99,\'outNetwork\':424.06,\'code\':\'99205\',\'zip\':\'90210\',\'lastupdated\':\'2012-02-13T00:00:00.000-05:00\'”
+ "";
单据单据=空;
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
试一试{
DocumentBuilder db=dbf.newDocumentBuilder();
InputSource is=新的InputSource();
is.setCharacterStream(新的StringReader(xml));
doc=db.parse(is);
}捕获(例外e){
e、 printStackTrace();
}
doc.getDocumentElement().normalize();
字符串text=doc.getDocumentElement().getTextContent();
System.out.println(文本);
试一试{
//测试json字符串是否有效
JsonParser JsonParser=新的JsonParser();
JsonElement=jsonParser.parse(文本);
System.out.println(“有效JSon”);
System.out.println(“isArray:+jsonement.isJsonArray());
JsonArray JsonArray=jsonElement.getAsJsonArray();
JsonObject JsonObject=jsonArray.get(0.getAsJsonObject();
System.out.println(“id:+jsonObject.get(“id”);
System.out.println(“类型:”+jsonObject.get(“类型”);
系统输出
.println(“描述:+jsonObject.get(“描述”));
System.out.println(“category:+jsonObject.get(“category”);
系统输出
.println(“子类别:+jsonObject.get(“子类别”);
System.out.println(“inNetwork:+jsonObject.get(“inNetwork”));
System.out.println(“outNetwork:+jsonObject.get(“outNetwork”));
System.out.println(“代码:”+jsonObject.get(“代码”);
System.out.println(“zip:+jsonObject.get(“zip”);
系统输出
.println(“lastupdated:+jsonObject.get(“lastupdated”);
}捕获(JsonSyntaxException e2){
//TODO自动生成的捕捉块
e2.printStackTrace();
}       

注意:-(当然,您可以在不使用GSON的情况下尝试使用本机JSON解析器)

此[thread][1]可能已经有您的答案了。[1] :的副本-请不要转发问题。