当前位置: 首页 > 知识库问答 >
问题:

将属性文件元素显示为json数组

乐正镜
2023-03-14

我想将属性文件中的内容显示为json数组:以下是我的java代码:

props.setProperty("Info1", "stack1");
props.setProperty("Info2", "stack2");

我在属性文件中得到了什么:

 Info1=stack1
 Info2=stack2

这是我想要的

var Obj =  {}
Obj.dataset= [{ "Info1":"stack1" },{ "Info2"="stack2"}];

我尝试使用Gson和JsonObject,但没有成功。请问我该怎么办?这不是一个重复的问题,因为我正在使用properties类,并且我已经尝试过的建议答案不起作用。

共有3个答案

淳于鹏
2023-03-14

您还可以使用以下选项:

    Properties props = new Properties();
    props.setProperty("Info1", "stack1");
    props.setProperty("Info2", "stack2");
    JSONArray array = new JSONArray();
    Map map = new HashMap();

    Iterator iter = props.keySet().iterator();

    while (iter.hasNext()) {
        String key = (String) iter.next();
        String value = props.getProperty(key);
        map.put(key, value);
    }

    array.put(map);
    for (int i = 0; i < array.length(); i++) {
        JSONObject obj = (JSONObject) array.get(i);
        System.out.println(obj.toString());
    }
岳迪
2023-03-14

可以使用jackson及其ObjectMapper执行此操作,如下所示:

Properties props = new Properties();
props.setProperty("Info1", "stack1");
props.setProperty("Info2", "stack2");

ObjectMapper mapper = new ObjectMapper();
StringWriter writer = new StringWriter();
mapper.writeValue(writer, props);
System.out.println(writer.toString());

输出:

{"Info2":"stack2","Info1":"stack1"}

这里有一个关于杰克逊的好教程。

孙洋
2023-03-14

您可以在属性上循环并将键/值添加到Json数组,如下所示:

Properties props = new Properties();
props.setProperty("Info1", "stack1");
props.setProperty("Info2", "stack2");

Enumeration e = props.propertyNames();
JsonArray  jsonArray = new JSONArray();

while(e.hasMoreElements()) {
    String key = (String) e.nextElement();
    String value = props.getProperty(key);

    JSONObject jsonObject = new JSONObject();
    jsonObject.put(key, value);

    jsonArray.add(jsonObject);
}

System.out.println(jsonArray.toString());
 类似资料:
  • 我正在使用 django 模板生成 JSON 文件,如下所示: 如何为JSON文件添加django模板支持以启用自动完成?

  • 在使用Vdt的过程中,你也许会遇到这样一个问题:设置的属性,并不能渲染出来,例如: <input maxlength="10" /> 上述例子中,设置的maxlength属性丢失了。要理解这个原因,可以看看这段介绍 Content attribute & IDL attribute, 以及Virtual-Dom文档中对VNode的介绍 Content vs IDL attribute Conte

  • 问题内容: 我正在使用Spring 从文件加载属性属性,如下所示: Spring xml文件 还有我的Class.java 但是在调试时,参数元素仅将最后一个元素带入列表,因此,存在一个值为“ 6”的元素的列表,而不是包含6个元素的列表。 我尝试了其他方法,例如仅添加值,但随后在属性文件中找不到任何参数。 一种解决方法是在elements.properties文件中使用逗号分隔列表,例如: 并将其

  • 问题内容: 当显示其父元素时,是否有任何机制可显示子元素:无? 这种情况是隐藏选项卡上的验证错误。我想显示错误消息,即使该字段是隐藏的。 标记: CSS: 我猜这是不可能的,因为孩子没有上下文,但以防万一? 问题答案: 不,这是不可能的。隐藏该元素,因此不会显示任何子元素。 编辑: 这可能是沿着你想要的线,如果你能够从使用切换到。 使用此方法,您可以隐藏父元素的内容,但显示所需的特定内容。唯一需要

  • 04-24 23:24:29.782 8144-8589/com.webdesigners.stockmarketW/System.err:android.view.ViewRootImpl$CalledFromWrongThreadExctive:只有创建视图层次结构的原始线程才能触摸其视图。04-24 23:24:29.783 8144-8589/com.webdesigners.stockm

  • 问题内容: 是否可以使用默认值覆盖display属性?例如,如果我以一种样式将其设置为none,而我想以其默认值以其他方式覆盖它。 还是找出该元素的默认值然后将其设置为默认值的唯一方法?不想知道元素通常是block,inline还是任何一个… 问题答案: 浏览器的默认样式在其用户代理样式表中定义,您可以在此处找到其来源。不幸的是,级联和继承级别3规范似乎并未提出一种将样式属性重置为其浏览器默认值的