当前位置:  开发笔记 > 编程语言 > 正文

Java中字符串转换的简单属性

如何解决《Java中字符串转换的简单属性》经验,为你挑选了1个好方法。

使用Java,我需要对名称值对的Map 进行编码以存储到String中,并能够再次对其进行解码.这些将存储在数据库列中,并且通常可能简短,因此常见的情况应该产生一个简单漂亮的行,但不应该破坏数据,即使它包含意外的字符等.

你会如何选择这样做:

编码形式是单个人类可读行

它不需要大型库或许多上下文来编码/解码

任何分隔符都可以正确转义

网址编码?JSON?自己做?请指定您使用的任何帮助程序库或方法.

(编辑以根据要求指定更多上下文和要求.)



1> Dan Vinton..:

正如@Uri所说,额外的背景会很好.我认为你的主要关注点不是特定的编码方案,因为对于大多数编码来说,滚动自己的编码方案对于简单编码来说非常简单Map.

一个有趣的问题是:这个中间字符串编码将用于什么?

如果它纯粹是内部的,那么ad-hoc格式很好,例如简单的连接:

key1|value1|key2|value2

如果人类晚上读它,像Ruby的地图声明这样的格式很好:

{ first_key  => first_value, 
  second_key => second_value }

如果编码是通过网络将序列化地图发送到另一个应用程序,那么XML建议很有意义,因为它是标准的,并且合理地自我记录,代价是XML的冗长.


    
    

如果要将地图刷新到文件并稍后由另一个Java应用程序读回,@ Classlet对Properties类的建议是一个好的,并且还具有易于人类打开和检查的额外好处.


编辑:您已经添加了要存储在数据库列中的信息 - 是否有理由使用单个列,而不是像这样使用三列:

CREATE TABLE StringMaps 
(
    map_id NUMBER   NOT NULL,  -- ditch this if you only store one map...
    key    VARCHAR2 NOT NULL,
    value  VARCHAR2
);

除了让您存储更具语义意义的数据外,这还可以更正式地将编码/解码转移到您的数据访问层,并允许其他数据库读取器轻松查看数据,而无需了解您可能使用的任何自定义编码方案.如果需要,您还可以通过键或值轻松查询.


再次编辑:你说它确实需要适合单个列,在这种情况下我要么:

使用第一个以管道分隔的编码(或者你喜欢的任何外来字符,也许是一些不可打印的英文unicode字符).最简单的事情.要么...

如果您正在使用像Oracle这样的数据库将XML识别为真实类型(因此可以对其进行XPath评估等等)并且需要能够从数据库层中很好地读取数据,那么请使用XML.编写用于解码的XML解析器永远不会有趣,但是对于这样一个简单的模式来说不应该太痛苦.

即使您的数据库本身不支持XML,您也可以将其放入任何旧的类似字符的列类型...

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有