如何使用React和JavaScript将.txt文件转换为JSON
我有一个.txt格式的文件,我的问题是如何将此文件中的文本转换为JSON格式(我希望将来将此JSON发送到服务器) 我有,从这个地方得到这个文件 我只使用React和Redux。不是JQUERY 以下是我从用户上传文件时的代码:如何使用React和JavaScript将.txt文件转换为JSON,javascript,json,Javascript,Json,我有一个.txt格式的文件,我的问题是如何将此文件中的文本转换为JSON格式(我希望将来将此JSON发送到服务器) 我有,从这个地方得到这个文件 我只使用React和Redux。不是JQUERY 以下是我从用户上传文件时的代码: class AddFilm extends Component { constructor() { super(); this.state = {}; } handleselectedFile = event =>
class AddFilm extends Component {
constructor() {
super();
this.state = {};
}
handleselectedFile = event => {
this.setState({
selectedFile: event.target.files[0],
loaded: 0
});
};
openFile(event) {
let input = event.target;
let reader = new FileReader();
reader.onload = function() {
let text = reader.result;
console.log(reader.result.substring(0));
};
reader.readAsText(input.files[0]);
}
render() {
return (
<div className="import-film container">
<div className="import-form">
<h3>Choose file to import</h3>
<input
type="file"
name=""
id=""
onChange={event => this.openFile(event)}
/>
<button onClick={this.handleUpload}>Upload</button>
</div>
</div>
);
}
}
);
export default ImportFilm;
谢谢你的回答 如果您的txt文件是一致的,那么类似的方法也可以:
const data=`标题:炽热的鞍座
发行年份:1974年
格式:VHS
明星:梅尔·布鲁克斯、克莱冯·利特尔、哈维·科曼、吉恩·怀尔德、斯利姆·皮肯斯、玛德琳·卡恩
标题:卡萨布兰卡
发行年份:1942年
格式:DVD
明星:汉弗莱·鲍嘉、英格丽·伯格曼、克劳德·雷恩斯、彼得·洛尔
标题:猜字谜
发行年份:1953年
格式:DVD
明星:奥黛丽·赫本、卡里·格兰特、沃尔特·马修、詹姆斯·科本、乔治·肯尼迪
标题:酷手卢克
发布年份:1967年
格式:VHS
明星:保罗·纽曼、乔治·肯尼迪、斯特罗瑟·马丁`
console.log(data.split('\n\n').map(条目=>{
常量obj={}
entry.split('\n').forEach(keyValue=>{
const split=keyValue.split(“:”)
常量键=拆分[0]
常量值=拆分[1]
obj[key]=key==“Stars”?值。拆分(“,”):值
})
返回obj
}))
如果您的txt文件是一致的,那么类似的方法也可以:
const data=`标题:炽热的鞍座
发行年份:1974年
格式:VHS
明星:梅尔·布鲁克斯、克莱冯·利特尔、哈维·科曼、吉恩·怀尔德、斯利姆·皮肯斯、玛德琳·卡恩
标题:卡萨布兰卡
发行年份:1942年
格式:DVD
明星:汉弗莱·鲍嘉、英格丽·伯格曼、克劳德·雷恩斯、彼得·洛尔
标题:猜字谜
发行年份:1953年
格式:DVD
明星:奥黛丽·赫本、卡里·格兰特、沃尔特·马修、詹姆斯·科本、乔治·肯尼迪
标题:酷手卢克
发布年份:1967年
格式:VHS
明星:保罗·纽曼、乔治·肯尼迪、斯特罗瑟·马丁`
console.log(data.split('\n\n').map(条目=>{
常量obj={}
entry.split('\n').forEach(keyValue=>{
const split=keyValue.split(“:”)
常量键=拆分[0]
常量值=拆分[1]
obj[key]=key==“Stars”?值。拆分(“,”):值
})
返回obj
}))
这个问题很久以前就被问到了,但最近我正在寻找类似问题的解决方案,我找到了一个简单的方法来解决它。所以,如果有人仍然感兴趣,就在这里
您可以简单地使用JSON.parse,而不是使用所有这些操作
const convertToJSON=(数据)=>{
返回数据.split('\n\n').map(条目=>{
返回JSON.parse(条目);
});
}
这个问题很久以前就被问到了,但最近我正在寻找类似问题的解决方案,我找到了一个简单的方法来解决它。所以,如果有人仍然感兴趣,就在这里
您可以简单地使用JSON.parse,而不是使用所有这些操作
const convertToJSON=(数据)=>{
返回数据.split('\n\n').map(条目=>{
返回JSON.parse(条目);
});
}
@Anon您的方法应该是找到解析该文件的方法。数据的格式很好,并且遵循固定的模式,所以不会太难。逐行读。每个填充的行对应一个对象属性。:
前面的任何内容都是属性的名称,后面的任何内容都是内容。因此,您可以创建一个空对象,并逐步将属性从文件添加到该对象中。当你到达一个空行时,是时候换一个新的对象了。创建每个对象后,将其添加到数组中。当你到达最后,字符串化数组,这就是你的JSON。这是一个NPM包,适合您的需要。我不知道您是否愿意使用它,因为您正在使用redux和react,我想您不会介意使用另一个package@ADyson哦,我知道,但不知道如何在JS中实现:(@Anon好的,你到底要做的是哪一部分?你已经读到了文件数据。现在你只需要按换行符和冒号字符分割数据。你不知道如何分割字符串吗?把问题分解成这些小步骤,我提到的一切在JavaScrip中都是很容易理解的简单任务t、 如果你不知道如何做一个特定的工作,那么研究就很容易了。不要把它当作一件大事来考虑,开始思考问题的每一个部分,然后一个一个地解决它们。@另外,你的方法应该是找到一种解析该文件的方法。数据格式良好,并且遵循固定的模式,所以这应该不会太难。你知道吗逐行添加。每个填充的行对应一个对象属性。:
之前的任何内容都是属性的名称,之后的任何内容都是内容。因此,您可以创建一个空对象,并逐渐将文件中的属性添加到该对象中。当您到达一个空行时,是时候创建一个新对象了。将每个对象添加到一个数组中恩,你已经创建了它。当你结束时,字符串化数组,这就是你的JSON。这是一个适合你需要的NPM包。我不知道你是否愿意使用它,因为你正在使用redux和react,我想你不会介意使用另一个package@ADyson哦,我知道,但不知道如何在JS中实现:(@Anon好的,你到底要做的是哪一部分?你已经读到了文件数据。现在你只需要按换行符和冒号字符分割数据。你不知道如何分割字符串吗?把问题分解成这些小步骤,我提到的一切在JavaScrip中都是很容易理解的简单任务t、 如果你不知道如何做一项具体的工作,那么研究就很容易了。不要把它当作一项大工作,开始思考问题的每一部分,并逐一解决。
Title: Blazing Saddles
Release Year: 1974
Format: VHS
Stars: Mel Brooks, Clevon Little, Harvey Korman, Gene Wilder, Slim Pickens, Madeline Kahn
Title: Casablanca
Release Year: 1942
Format: DVD
Stars: Humphrey Bogart, Ingrid Bergman, Claude Rains, Peter Lorre
Title: Charade
Release Year: 1953
Format: DVD
Stars: Audrey Hepburn, Cary Grant, Walter Matthau, James Coburn, George Kennedy
Title: Cool Hand Luke
Release Year: 1967
Format: VHS
Stars: Paul Newman, George Kennedy, Strother Martin