如何将config.properties转换为键值对?

3

我正在尝试将一个Java属性文件转换为键值对,以便在jQuery中使用。该属性文件发送以下信息:

company1=Google
company2=eBay
company3=Yahoo

And I want it in this form:

var obj = {
 company1: Google,
 company2: ebay,
 company3: Yahoo
};

我将通过URL访问属性文件。

1
JavaScript和Java是不同的。 - brk
是的,我知道。但我正在尝试将属性文件的输出转换为键值对。我得到的是上面的示例,我需要转换为下面的示例。 - Mandalina
你的输出是什么样子的?你是否将输出存储在 JavaScript 变量中? - brk
你需要在运行时以编程方式完成这个任务吗?也就是说,你的程序会读取属性文件,并根据其生成一个Javascript对象? - Andrei Pietrusel
如果您使用Maven,您可以获取一个JSON库 https://mvnrepository.com/artifact/org.json/json - jonatjano
显示剩余2条评论
2个回答

6
假设您的文件与您在此处粘贴的方式完全相同,我会采取以下方法处理它:

var data = "company1=Google\ncompany2=eBay\ncompany3=Yahoo";

var formattedData = data
  // split the data by line
  .split("\n")
  // split each row into key and property
  .map(row => row.split("="))
  // use reduce to assign key-value pairs to a new object
  // using Array.prototype.reduce
  .reduce((acc, [key, value]) => (acc[key] = value, acc), {});

var obj = formattedData;

console.log(obj);

如果您需要支持ES5,这篇文章可能会对您有所帮助:从数组创建对象


2
好的答案 +1。请注意,您的 reduce 可以重写为 .reduce((acc, [key, value]) => (acc[key] = value, acc), {});,这样既更短,也更快,因为它不会在循环的每个步骤中重新分配累加器。 - Jared Smith
非常感谢!这正是我所寻找的。 - Mandalina

1

只需使用npm模块https://www.npmjs.com/package/properties

该模块实现了Java .properties规范,并添加了额外的功能,如ini节、变量(键引用)、命名空间、导入文件等等。

# file
compa = 1
compb = 2


nodejs:

var properties = require ("properties");

properties.parse ("file.properties", { path: true }, function (error, obj){
  if (error) return console.error (error);

  console.log (obj);
  //{ compa : 1, compb : 2 }
});

谢谢您的回复。然而,对于这个项目,我希望有一个完全在前端完成数据解析的东西。 - Mandalina
虽然通常使用经过实战检验的第三方库而不是自己编写代码是一个好主意,但对于这种微不足道的东西,可能没有必要引入依赖(在此插入 left-pad 笑话) :) - Jared Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接