【问题标题】:How to convert config.properties into key value pairs?如何将 config.properties 转换为键值对?
【发布时间】:2019-02-02 03:30:15
【问题描述】:

我正在尝试将 java 属性文件转换为可以在 jquery 中使用的键值对。属性文件发送如下信息:

company1=Google
company2=eBay
company3=Yahoo

我想要这种形式:

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

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

【问题讨论】:

  • javascript 和 java 是不同的。
  • 是的,我知道。但我正在尝试将属性文件的输出转换为键值对。我得到的是顶部示例,我需要转换为底部示例。
  • 在构建 json 时可以随时使用此引用:json.org
  • 你的输出是什么样子的,你是否在一个 javascript 变量中得到输出
  • 您需要在运行时以编程方式执行此操作吗?就像在你的程序中读取属性文件并基于它生成一个 Javascript 对象一样?

标签: javascript jquery json property-files


【解决方案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 }
});

【讨论】:

  • 感谢您的回复。然而,对于这个项目,我希望能有一些东西来解析数据。完全在前端完成
  • 虽然使用经过实战考验的第三方库而不是滚动自己的库通常是个好主意,但对于这种微不足道的事情,它可能不值得依赖(在此处插入左键盘笑话) :)
【解决方案2】:

假设您的文件与您在此处粘贴的方式完全相同,我会这样处理它:

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,这篇文章可能会有所帮助Create object from array

【讨论】:

  • 好答案+1。请注意,您的 reduce 可以重写为 .reduce((acc, [key, value]) => (acc[key] = value, acc), {});,这样既短又快,因为它不会在循环中的每一步都重新分配累加器。
  • 非常感谢!这正是我想要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
  • 2019-12-02
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
相关资源
最近更新 更多