从字符串中提取JSON

时间:2014-08-08 13:49:19

标签: javascript json string

我从服务器获取一个字符串,并希望从中提取Json字符串 这是字符串

<?xml version="1.0" encoding="utf-8"?>
    <string xmlns="http://tempuri.org/">
      [{"isAssigned": false,"Name": "c:\\inetpub\\wwwroot\\XLEZ\\CLIENT","LastModified": ""},
    {"isAssigned": true,"Name": "\\mokuji.html","LastModified": "20140806 165709"},
    {"isAssigned": false,"Name": "\\result.html",{"LastModified": "20131002 235302"}]
    </string>

我无法弄清楚如何做到这一点...... 这是JSFiddle

5 个答案:

答案 0 :(得分:3)

基于this通过Convert XML to JSON (and back) using Javascript

我这样做了:

Live Demo

无错误处理

function parseXml(xml) {
  var dom = null;
  if (window.DOMParser) {
    try {
        dom = (new DOMParser()).parseFromString(xml, "text/xml");
    } catch (e) {
        dom = null;
    }
  } else if (window.ActiveXObject) {
    try {
        dom = new ActiveXObject('Microsoft.XMLDOM');
        dom.async = false;
        if (!dom.loadXML(xml)) // parse error ..

        window.alert(dom.parseError.reason + dom.parseError.srcText);
    } catch (e) {
        dom = null;
    }
  } else alert("cannot parse xml string!");
  return dom;
}


function extractJson() {
  var xml = '<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">[ {"x":"y"},{"a":"b"}]</string>';
  var json = JSON.parse(parseXml(xml).firstChild.textContent);
  console.log(json)
}

答案 1 :(得分:2)

如果您不反对使用jQuery,它会处理从XML字符串遍历和提取​​数据以及HTML字符串。

您可以像这样拉

的JSON字符串
    // Get JSON string out
    var extractedJson = $(jsonData).text();

    // If you need it as an object
    var extractedJsonAsObject = $.parseJSON(extractedJson);

以下是你的小提琴的一个实例:

http://plnkr.co/edit/nfnjreyfv0adIZ6Ue1Ox?p=preview

答案 2 :(得分:1)

您可以简单地解析XML并获取其内容

function extractJson()
{

var jsonData = '<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">[ {'sone': 'json'},{'some': 'json2'}]</string>';
    var parser = new DOMParser();
 var xmlDoc = parser.parseFromString(jsonData,"text/xml");
console.log(xmlDoc.getElementsByTagName('string')[0].innerHTML);    
}
extractJson();

注意: Internet Explorer使用loadXML()方法解析XML字符串,而其他浏览器使用DOMParser对象。

答案 3 :(得分:0)

Here是一个完成这项工作的GIST。

代码在kotlin中,但可以很容易地翻译成任何语言。

答案 4 :(得分:-2)

假设Json不包含标签,您只需将所有xml标签替换为空字符串(即删除它们),如下所示:

function extractJson(){
    var jsonData = '<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">[ {sonejson},{some json2}]</string>';
    var extractdJson = jsonData.replace(/\<[^\>]+\>/gi,''); // extracted jason fron jsonData 
    alert(extractdJson);    
}

希望这有帮助