将.txt文件读取到json数据jquery-javascript

时间:2018-01-30 07:07:53

标签: javascript jquery arrays json text-files

我有自动生成.txt文件的代码,如下:

DataTable dt = ds.Tables[0];
string prdcontent = DataTableToJSONWithStringBuilder(dt);//this will generate json string
System.IO.File.WriteAllText(Server.MapPath("~/ContentPage/prdbank.txt"), prdcontent, Encoding.UTF8);  

行。我有一个包含此内容的.txt文件:

  

[{“matin”:“1”,“matl”:“11”,“tieude”:“1 pha DT01P - DT01P / 08 - DT01P / 16”,“cloaisp”:“0”},{“ matin“:”12“,”matl“:”11“,”tieude“:”3 pha DT03P“,”cloaisp“:”0“},{”matin“:”17“,”matl“:”11“ ,“tieude”:“1 pha DT01P60-RF”,“cloaisp”:“1”},{“matin”:“18”,“matl”:“11”,“tieude”:“3 pha DT03P05”,“ cloaisp“:”3“},{”matin“:”19“,”matl“:”11“,”tieude“:”3 pha DT03P-RF“,”cloaisp“:”3“},{”matin“ :“9”,“matl”:“11”,“tieude”:“1 pha DT01P80-RF - mẫu2”,“cloaisp”:“1”},{“matin”:“10”,“matl”: “11”,“tieude”:“3 pha DT03P-RF - mẫu2”,“cloaisp”:“3”},{“matin”:“4”,“matl”:“11”,“tieude”:“ 1 pha DT01P80-RF“,”cloaisp“:”1“},{”matin“:”5“,”matl“:”11“,”tieude“:”1 pha DT01P60-RF - mẫu2“,”cloaisp “:”1“},{”matin“:”22“,”matl“:”11“,”tieude“:”1 pha DT01P-RF“,”cloaisp“:”1“},{”matin“: “23”,“matl”:“11”,“tieude”:“1 pha DT01P-RFmẫu2”,“cloaisp”:“1”},{“matin”:“28”,“matl”:“11 “,”tieude“:”1 pha DT01P80-RFmô-đunRFPắnngoài“,”cloaisp“:”“},{”matin“:”26“,”matl“:”11“,”tieude“:” 1 pha DT01M10“,”cloaisp“:”“},{”matin“:”27“,”matl“:”11“,”tieude“:”1 pha DT 01M80“,”cloaisp“:”“},{”matin“:”16“,”matl“:”11“,”tieude“:”3 pha DT03M01“,”cloaisp“:”3“},{”matin “:”20“,”matl“:”11“,”tieude“:”3 pha DT03M10“,”cloaisp“:”3“},{”matin“:”14“,”matl“:”11“, “tieude”:“3 pha DT03M05”,“cloaisp”:“3”},{“matin”:“15”,“matl”:“11”,“tieude”:“BộthậtữdữliệuDCU”,“ cloaisp“:”2“},{”matin“:”13“,”matl“:”11“,”tieude“:”调制解调器RMR TurboJet“,”cloaisp“:”2“},{”matin“:” 21“,”matl“:”11“,”tieude“:”HệthốngRFSPIDER“,”cloaisp“:”2“},{”matin“:”6“,”matl“:”11“,”tieude“ :“BộđịnushuếndữliệuRouter”,“cloaisp”:“2”},{“matin”:“7”,“matl”:“11”,“tieude”:“BộchuyểnđổiRS232/ RS485”,“ cloaisp“:”2“},{”matin“:”8“,”matl“:”11“,”tieude“:”BộđọcchỉsốcôngtơsosóngvôtuyếnRF-EXT“,”cloaisp“:” 2“},{”matin“:”11“,”matl“:”11“,”tieude“:”HệthốngGiámsátHEMS“,”cloaisp“:”2“},{”matin“:”2“ ,“matl”:“11”,“tieude”:“Thiếtbị掌上单位”,“cloaisp”:“2”},{“matin”:“3”,“matl”:“11”,“tieude”: “HệthốngthuthậpvàquảnlữdữliệuđođếmMDMS”, “cloaisp”:“2”},{“matin”:“25”,“matl”:“11”,“tieude”:“BộhiểnthịchỉsốIn Home display”,“cloaisp”:“”},{ “matin”:“29”,“matl”:“11”,“tieude”:“BộmởrộngELSTER-RF”,“cloaisp”:“”},{“matin”:“31”,“matl”: “11”,“tieude”:“T.bịgiámsátchấtlượnglướiđiện”,“cloaisp”:“”},{“matin”:“36”,“matl”:“11”,“tieude”:“ BộmởrộngchứcnăngRFchocôngtơLandis“,”cloaisp“:”“},{”matin“:”37“,”matl“:”11“,”tieude“:”Thiếtbịcảnhbáosựcốtrênlưới trungthế“,”cloaisp“:”“}}

现在,我想读取这个txt文件并使用结果作为json数据,我正在使用这个函数:

var jsontext_prdbank = (readTextFile('../ContentPage/prdbank.txt'));
var jsontext = JSON.parse(jsontext_prdbank);

使用readtextfile函数:

function readTextFile(file) {
var rawtext;
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function () {
    if (rawFile.readyState === 4) {
        if (rawFile.status === 200 || rawFile.status == 0) {
            var allText = JSON.stringify(rawFile.responseText);
            rawtext = allText;
        }
    }
}
rawFile.send(null);
return rawtext;
}

我得到这样的jsontext:“[{”matin“:”1 ....(json string content)... cloaisp“:”“}]”但是当我使用
for (var i = 0; i < rowCount; i++) { var row = jsontext[i];}

,行只是“[”。所以这意味着JSON.parse(jsontext_prdbank)只返回一个字符串,而不是一个json数据。如何在这种情况下使用json数据?

3 个答案:

答案 0 :(得分:1)

只需从原始代码中移除pdbJSON.stringify就是字符串

responseText

var jsontext_prdbank = (readTextFile('../ContentPage/prdbank.txt')); var jsontext = JSON.parse(jsontext_prdbank); function readTextFile(file) { var rawtext; var rawFile = new XMLHttpRequest(); rawFile.open("GET", file, false); rawFile.onreadystatechange = function () { if (rawFile.readyState === 4) { if (rawFile.status === 200 || rawFile.status == 0) { rawtext = rawFile.responseText; } } } rawFile.send(null); return rawtext; }

循环播放对象
JSON.parse

答案 1 :(得分:1)

因为您在函数中使用了以下代码:

streamA.join(streamB, expr("streamA_ID = streamB_ID AND timeA BETWEEN timeB - INTERVAL 15 minutes and timeB"), joinType="{joinType}")

请改用以下内容:

var allText = JSON.stringify(rawFile.responseText);
rawtext = allText;

然后你可以使用以下内容:

// rawFile.responseText is already in string form
// so parse it into an object and assign it to allText
var allText = JSON.parse(rawFile.responseText);

答案 2 :(得分:1)

而不是JSON.stringify,使用JSON.parse将您的文件内容解析为JavaScript对象。