如何将 JSON 结构转换为 XML android

Posted

技术标签:

【中文标题】如何将 JSON 结构转换为 XML android【英文标题】:How can i convert a JSON structure to XML android 【发布时间】:2015-02-05 09:22:00 【问题描述】:

好的,伙计们,我有一个发票应用程序,它将发送存储在我的 Sqlite 中的发票列表,

我创建了一个转换器来从我的数据库中获取这些数据并通过 HttpPost 发送到我的服务器,但服务器只接受 ATOM/XML(而不是)或 XML ...我如何修改下面的此类以发送为XML 或 ATOM/XML ???有什么想法吗??

public class ItemNotaConverter 
public String toJSON(List<ItemNota> itemnotas) 
    try 
        JSONStringer jsonStringer = new JSONStringer();
        jsonStringer.object().key("list").array().object().key("itemnota").array();

        for (ItemNota itemnota : itemnotas) 
            jsonStringer.object().
            key("id_itemnota").value(itemnota.getId_itemnota()).
            key("conjunto").value(itemnota.getConjunto()).
            key("n_defeitos").value(itemnota.getNumeroDefeitos()).
            key("problema").value(itemnota.getProblema()).
            key("procedencia").value(itemnota.getProcedencia()).
            key("descri_detalhes").value(itemnota.getDescricao_problema()).
            endObject();
        
        return jsonStringer.endArray().endObject().endArray().endObject().toString();
     catch (JSONException e) 
        throw new RuntimeException(e);
    

我的 WebClient 类打开 HttpRequest

public class WebClient 
    private final String url ;
        public WebClient(String url) 
            this.url = url; 
                   
        public String post(String json) 
            try 
            DefaultHttpClient httpClient = new DefaultHttpClient();

            HttpPost post = new HttpPost(url);
            post.setEntity(new StringEntity(json));

            post.setHeader("Accept", "application/json");
            post.setHeader("Content-type", "application/json");

            HttpResponse response = httpClient.execute(post);
            String jsonDeResposta = EntityUtils.toString(response.getEntity());

            return jsonDeResposta;

        catch (Exception e) 
            throw new RuntimeException(e);
        

还有我的 AsyncTask 来执行“发送东西”

public class EnviaNotasTask extends AsyncTask<Object, Object, String> 

    private final Context context;
    private ProgressDialog progress;
    private final String enderecourl = "MyUrl";

    public EnviaNotasTask(Context context) 
        this.context = context;
    

    protected void onPreExecute() 
progress = ProgressDialog.show(context, "Aguarde...", "Envio de dados para Web", true, true);
    
    protected String doInBackground(Object... params) 
        Stara_DB dao = new Stara_DB(context);
        List<Nota> lista = dao.getListaNota();
        dao.close();

        String listaJson = new NotaConverter().toJSON(lista);
        String JsonResposta = new WebClient("MyUrl").post(listaJson);

        return JsonResposta;
    
        protected void onPostExecute(String result) 
        progress.dismiss();
        Toast.makeText(context, result, Toast.LENGTH_LONG).show();
    

任何帮助都会得到真正的赞赏!!!

【问题讨论】:

【参考方案1】:

json.org,JSON 的母体,提供a library that you can use。

以下是您的 JSON 变成 XML 的方式:

JSONObject json = new JSONObject(str);
String xml = XML.toString(json);  

来源:Converting JSON to XML in Java

【讨论】:

Underscore-java 转换得更好。加上 MIT 许可证。【参考方案2】:

Underscore-java 库有静态方法U.jsonToXml(string)。我是项目的维护者。 Live example

import com.github.underscore.U;

public class MyClass 
    public static void main(String args[]) 
        String json = "\"Price\": "
        + "    \"LineItems\": "
        + "        \"LineItem\": "
        + "            \"UnitOfMeasure\": \"EACH\", \"Quantity\": 2, \"ItemID\": \"ItemID\""
        + "        "
        + "    ,"
        + "    \"Currency\": \"USD\","
        + "    \"EnterpriseCode\": \"EnterpriseCode\""
        + "";
        System.out.println(U.jsonToXml(json)); 
    

输出:

<?xml version="1.0" encoding="UTF-8"?>
<Price>
  <LineItems>
    <LineItem>
      <UnitOfMeasure>EACH</UnitOfMeasure>
      <Quantity number="true">2</Quantity>
      <ItemID>ItemID</ItemID>
    </LineItem>
  </LineItems>
  <Currency>USD</Currency>
  <EnterpriseCode>EnterpriseCode</EnterpriseCode>
</Price>

【讨论】:

以上是关于如何将 JSON 结构转换为 XML android的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java 将 xml 转换为 json

PHP将带有一些(重复)元素的XML转换为Json到Json数组[重复]

如何使用 saxonjs 将 json 转换为 xml?

C# - 如何将复杂的 json 转换为 XML,并将名称和值属性转换为标签

如何将 XML 转换为具有二进制数据内容的 Json

如何使用 XSLT 将 JSON 转换为 XML?