篇一 : JSON字符串格式化
Java代码
public class JsonTool {
/**
* json字符串的格式化
*
* @param json
* @param fillStringUnit
* @return
*/
public static String formatJson(String json, String fillStringUnit) {
if (json == null || json.trim().length() == 0) {
return null;
}
int fixedLenth = 0;
ArrayListtokenList = new ArrayList();
{
String jsonTemp = json;
//预读取
while (jsonTemp.length() >0) {
String token = getToken(jsonTemp);
jsonTemp = jsonTemp.substring(token.length());
token = token.trim();
tokenList.add(token);
}
}
for (int i = 0; i < tokenList.size(); i++) {
String token = tokenList.get(i);
int length = token.getBytes().length;
if (length >fixedLenth && i < tokenList.size() - 1 && tokenList.get(i + 1).equals(":")) {
fixedLenth = length;
}
}
StringBuilder buf = new StringBuilder();
int count = 0;
for (int i = 0; i < tokenList.size(); i++) {
String token = tokenList.get(i);
if (token.equals(",")) {
buf.append(token);
doFill(buf, count, fillStringUnit);
continue;
}
if (token.equals(":")) {
buf.append(" ").append(token).append(" ");
continue;
}
if (token.equals("{")) {
String nextToken = tokenList.get(i + 1);
if (nextToken.equals("}")) {
i++;
buf.append("{ }");
} else {
count++;
buf.append(token);
doFill(buf, count, fillStringUnit);
}
continue;
}
if (token.equals("}")) {
count--;
doFill(buf, count, fillStringUnit);
buf.append(token);
continue;
}
if (token.equals("[")) {
String nextToken = tokenList.get(i + 1);
if (nextToken.equals("]")) {
i++;
buf.append("[ ]");
} else {
count++;
buf.append(token);
doFill(buf, count, fillStringUnit);
}
continue;
}
if (token.equals("]")) {
count--;
doFill(buf, count, fillStringUnit);
buf.append(token);
continue;
}
buf.append(token);
//左对齐
if (i < tokenList.size() - 1 && tokenList.get(i + 1).equals(":")) {
int fillLength = fixedLenth - token.getBytes().length;
if (fillLength >0) {
for(int j = 0; j < fillLength; j++) {
buf.append(" ");
}
}
}
}
return buf.toString();
}
private static String getToken(String json) {
StringBuilder buf = new StringBuilder();
boolean isInYinHao = false;
while (json.length() >0) {
String token = json.substring(0, 1);
json = json.substring(1);
if (!isInYinHao &&
(token.equals(":") || token.equals("{") || token.equals("}")
|| token.equals("[") || token.equals("]")
|| token.equals(","))) {
if (buf.toString().trim().length() == 0) {
buf.append(token);
}
break;
}
if (token.equals("\\")) {
buf.append(token);
buf.append(json.substring(0, 1));
json = json.substring(1);
continue;
}
if (token.equals("\"")) {
buf.append(token);
if (isInYinHao) {
break;
} else {
isInYinHao = true;
continue;
}
}
buf.append(token);
}
return buf.toString();
}
private static void doFill(StringBuilder buf, int count, String fillStringUnit) {
buf.append("\n");
for (int i = 0; i < count; i++) {
buf.append(fillStringUnit);
}
}
}
作者“wuyuhou”
篇二 : JSON对象和字符串之间的相互转换
比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象:
view sourceprint?
1vara={"name":"tom","sex":"男","age":"24"};
2
3varb='{"name":"Mike","sex":"女","age":"29"}';
在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法。(]
JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式;
上面的转换可以这么写:
view sourceprint?
01vara={"name":"tom","sex":"男","age":"24"};
02
03varb='{"name":"Mike","sex":"女","age":"29"}';
04
05varaToStr=JSON.stringify(a);
06
07varbToObj=JSON.parse(b);
08
09alert(typeof(aToStr)); //string
10
11alert(typeof(bToObj));//object
JSON.stringify()
ie8(兼容模式),ie7和ie6没有JSON对象,不过提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;你可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。
ie8(兼容模式),ie7和ie6可以使用eval()将字符串转为JSON对象,
1varc='{"name":"Mike","sex":"女","age":"29"}';
2varcToObj=eval("("+c+")");
3alert(typeof(cToObj));
jQuery中也有将字符串转为JSON格式的方法jQuery.parseJSON( json ),接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript (JSON)对象。当然如果有兴趣可以自己封装一个jQuery扩展,jQuery.stringifyJSON(obj)将JSON转为字符串。
扩展:字符串转换为json对象 / json对象转换成字符串 / js字符串转换json对象
篇三 : C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
方法一:Convert.ToDateTime(string)
string格式有要求,必须是yyyy-MM-dd hh:mm:ss
================================================
方法二:Convert.ToDateTime(string, IFormatProvider)
DateTime dt;
DateTimeFormatInfo dtFormat = new System.GlobalizationDateTimeFormatInfo();
dtFormat.ShortDatePattern = "yyyy/MM/dd";
dt = Convert.ToDateTime("2011/05/26", dtFormat);
================================================
方法二:DateTime.ParseExact()
string dateString = "20110526";
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
或者
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
附参考信息: