本文的目的是介绍将Bundle转换为JSON的详细情况,特别关注json转blob的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解将Bundle转换为JSON的机会,
本文的目的是介绍将Bundle转换为JSON的详细情况,特别关注json转blob的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解将Bundle转换为JSON的机会,同时也不会遗漏关于android – org.json.jsonarray无法转换为jsonobject错误、C#中把Datatable转换为Json的5个代码实例、CodeGo.net>如何将.NET DateTime转换为JSON、ios – 将NSDate转换为JSON日期?的知识。
本文目录一览:- 将Bundle转换为JSON(json转blob)
- android – org.json.jsonarray无法转换为jsonobject错误
- C#中把Datatable转换为Json的5个代码实例
- CodeGo.net>如何将.NET DateTime转换为JSON
- ios – 将NSDate转换为JSON日期?
将Bundle转换为JSON(json转blob)
我想将Intent的Extras Bundle转换为JSONObject,以便可以将其传递给JavaScript。
有没有快速或最佳的方法来进行此转换?如果不是所有可能的捆绑包都能正常工作,那就没关系了。
答案1
小编典典您可以Bundle#keySet()
用来获取捆绑软件包含的密钥列表。然后,您可以遍历这些键,并将每个键值对添加到中JSONObject
:
JSONObject json = new JSONObject();Set<String> keys = bundle.keySet();for (String key : keys) { try { // json.put(key, bundle.get(key)); see edit below json.put(key, JSONObject.wrap(bundle.get(key))); } catch(JSONException e) { //Handle exception here }}
请注意,这JSONObject#put
将需要您抓住一个JSONException
。
编辑:
有人指出,以前的代码不能很好地处理Collection
和Map
键入。如果您使用的是API
19或更高版本,那么有一种JSONObject#wrap
对您很重要的方法将有所帮助。从文档:
如有必要,包装一个物体。如果对象为null,则返回NULL对象。如果它是数组或集合,则将其包装在JSONArray中。如果是地图,则将其包装在JSONObject中。如果它是标准属性(Double,String等),则它已经被包装。否则,如果它来自java软件包之一,则将其转换为字符串。如果没有,请尝试将其包装在JSONObject中。如果包装失败,则返回null。
android – org.json.jsonarray无法转换为jsonobject错误
在任何人的情况下更新的代码都需要这个的固定.
我的错误:
01-14 22:18:08.165: E/JSON Response:(419): > { "event":[ 01-14 22:18:08.165: E/JSON Response:(419): { 01-14 22:18:08.165: E/JSON Response:(419): "event_name":"Test Event",01-14 22:18:08.165: E/JSON Response:(419): "event_time":"7:00pm",01-14 22:18:08.165: E/JSON Response:(419): "event_price":"$15.00" 01-14 22:18:08.165: E/JSON Response:(419): } 01-14 22:18:08.165: E/JSON Response:(419): ] 01-14 22:18:08.165: E/JSON Response:(419): } 01-14 22:18:08.175: E/Json Error(419): Error: org.json.JSONException: Value [{"event_price":"$15.00","event_time":"7:00pm","event_name":"Test Event"}] at event of type org.json.JSONArray cannot be converted to JSONObject
MainActivity.java
package com.example.dba; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { String event_name,event_time,event_price; static JSONObject object =null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new PrefetchData().execute(); } /** * Async Task to make http call */ private class PrefetchData extends AsyncTask<Void,Void,Void> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Void doInBackground(Void... arg0) { JsonParser jsonParser = new JsonParser(); String json = jsonParser.getJSONFromUrl("http://www.website/test.json"); Log.e("JSON Response: ","> " + json); if (json != null) { try { JSONObject parent = new JSONObject(json); JSONArray eventDetails = parent.getJSONArray("event"); for(int i=0; i < eventDetails.length(); i++) { object = eventDetails.getJSONObject(i); event_name = object.getString("event_name"); event_time = object.getString("event_time"); event_price = object.getString("event_price"); Log.e("JSON","> " + event_name + event_time + event_price ); } } catch (JSONException e) { Log.e("Json Error","Error: " + e.toString()); e.printstacktrace(); } } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); Intent i = new Intent(MainActivity.this,Events.class); i.putExtra("event_name",event_name); i.putExtra("event_time",event_time); i.putExtra("event_price",event_price); startActivity(i); // close this activity finish(); } } } }
解决方法
JSONObject eventDetails = parent.getJSONObject("event");
至:
JSONArray eventDetails = parent.getJSONArray("event");
C#中把Datatable转换为Json的5个代码实例
实例一:
/// <summary> /// Datatable转换为Json /// </summary> /// <param name="table">Datatable对象</param> /// <returns>Json字符串</returns> public static string ToJson(DataTable dt) { StringBuilder jsonString = new StringBuilder(); jsonString.Append("["); DataRowCollection drc = dt.Rows; for (int i = 0; i < drc.Count; i++) { jsonString.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { string strKey = dt.Columns[j].ColumnName; string strValue = drc[i][j].ToString(); Type type = dt.Columns[j].DataType; jsonString.Append("\"" + strKey + "\":"); strValue = StringFormat(strValue, type); if (j < dt.Columns.Count - 1) { jsonString.Append(strValue + ","); } else { jsonString.Append(strValue); } } jsonString.Append("},"); } jsonString.Remove(jsonString.Length - 1, 1); jsonString.Append("]"); return jsonString.ToString(); } /// <summary> /// 格式化字符型、日期型、布尔型 /// </summary> /// <param name="str"></param> /// <param name="type"></param> /// <returns></returns> private static string StringFormat(string str, Type type) { if (type == typeof(string)) { str = String2Json(str); str = "\"" + str + "\""; } else if (type == typeof(DateTime)) { str = "\"" + str + "\""; } else if (type == typeof(bool)) { str = str.ToLower(); } else if (type != typeof(string) && string.IsNullOrEmpty(str)) { str = "\"" + str + "\""; } return str; } /// <summary> /// 过滤特殊字符 /// </summary> /// <param name="s">字符串</param> /// <returns>json字符串</returns> private static string String2Json(String s) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.Length; i++) { char c = s.ToCharArray()[i]; switch (c) { case '\"': sb.Append("\\\""); break; case '\\': sb.Append("\\\\"); break; case '/': sb.Append("\\/"); break; case '\b': sb.Append("\\b"); break; case '\f': sb.Append("\\f"); break; case '\n': sb.Append("\\n"); break; case '\r': sb.Append("\\r"); break; case '\t': sb.Append("\\t"); break; default: sb.Append(c); break; } } return sb.ToString(); }
实例二:
public static string CreateJsonParameters(DataTable dt) { /**//**/ /**//* /**************************************************************************** * Without goingin to the depth of the functioning of this Method, i will try to give an overview * As soon as this method gets a DataTable it starts to convert it into JSON String, * it takes each row and in each row it grabs the cell name and its data. * This kind of JSON is very usefull when developer have to have Column name of the . * Values Can be Access on clien in this way. OBJ.HEAD[0].<ColumnName> * NOTE: One negative point. by this method user will not be able to call any cell by its index. * *************************************************************************/ StringBuilder JsonString = new StringBuilder(); //Exception Handling if (dt != null && dt.Rows.Count > 0) { JsonString.Append("{ "); JsonString.Append("\"T_blog\":[ "); for (int i = 0; i < dt.Rows.Count; i++) { JsonString.Append("{ "); for (int j = 0; j < dt.Columns.Count; j++) { if (j < dt.Columns.Count - 1) { JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\","); } else if (j == dt.Columns.Count - 1) { JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\""); } } /**//**/ /**//*end Of String*/ if (i == dt.Rows.Count - 1) { JsonString.Append("} "); } else { JsonString.Append("}, "); } } JsonString.Append("]}"); return JsonString.ToString(); } else { return null; } }
效果:
{"T_blog":
[
{"id":"14","title":"北京奥运开幕式","addtime":"2008-08-08"},
{"id":"15","title":"网络文化","addtime":"2008-09-12"},
{"id":"17","title":"北京下雨了","addtime":"2008-09-19"},
{"id":"21","title":"深圳地铁通了","addtime":"2008-09-25"}
]
}
实例三:
/// <summary> /// 将一个数据表转换成一个JSON字符串,在客户端可以直接转换成二维数组。 /// </summary> /// <param name="source">需要转换的表。</param> /// <returns></returns> public static string DataTableToJson(DataTable source) { if (source.Rows.Count == 0) return ""; StringBuilder sb = new StringBuilder("["); foreach (DataRow row in source.Rows) { sb.Append("["); for (int i = 0; i < source.Columns.Count; i++) { sb.Append('"' + row[i].ToString() + "\","); } sb.Remove(sb.Length - 1, 1); sb.Append("],"); } sb.Remove(sb.Length - 1, 1); sb.Append("]"); return sb.ToString(); } /// <summary> /// 反回JSON数据到前台 /// </summary> /// <param name="dt">数据表</param> /// <returns>JSON字符串</returns> public string CreateJsonParameters(DataTable dt) { StringBuilder JsonString = new StringBuilder(); //Exception Handling if (dt != null && dt.Rows.Count > 0) { JsonString.Append("{ "); JsonString.Append("\"TableInfo\":[ "); for (int i = 0; i < dt.Rows.Count; i++) { JsonString.Append("{ "); for (int j = 0; j < dt.Columns.Count; j++) { if (j < dt.Columns.Count - 1) { JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\","); } else if (j == dt.Columns.Count - 1) { JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\""); } } /**/ /*end Of String*/ if (i == dt.Rows.Count - 1) { JsonString.Append("} "); } else { JsonString.Append("}, "); } } JsonString.Append("]}"); return JsonString.ToString(); } else { return null; } }
实例四:
public class DataTableConvertJson { #region dataTable转换成Json格式 /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string DataTable2Json(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\""); jsonBuilder.Append(dt.TableName); jsonBuilder.Append("\":["); jsonBuilder.Append("["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Rows[i][j].ToString()); jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } #endregion dataTable转换成Json格式 #region DataSet转换成Json格式 /// <summary> /// DataSet转换成Json格式 /// </summary> /// <param name="ds">DataSet</param> /// <returns></returns> public static string Dataset2Json(DataSet ds) { StringBuilder json = new StringBuilder(); foreach (DataTable dt in ds.Tables) { json.Append("{\""); json.Append(dt.TableName); json.Append("\":"); json.Append(DataTable2Json(dt)); json.Append("}"); } return json.ToString(); } #endregion /// <summary> /// Msdn /// </summary> /// <param name="jsonName"></param> /// <param name="dt"></param> /// <returns></returns> public static string DataTableToJson(string jsonName, DataTable dt) { StringBuilder Json = new StringBuilder(); Json.Append("{\"" + jsonName + "\":["); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Json.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\""); if (j < dt.Columns.Count - 1) { Json.Append(","); } } Json.Append("}"); if (i < dt.Rows.Count - 1) { Json.Append(","); } } } Json.Append("]}"); return Json.ToString(); } }
实例五:
#region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> public class GetClassTypeJosn : IHttpHandler { /// <summary> /// 文件名:DataTable 和Json 字符串互转 /// 版权所有:Copyright (C) Create Family Wealth liangjw /// 创建标示:2013-08-03 /// </summary> //用法说明实例 public void ProcessRequest(HttpContext context) { context.Response.ContentType = "application/json"; context.Response.Charset = "utf-8"; HttpRequest req = context.Request; string method = req["method"].ToStr().ToLower(); //获取合同明细列表 DataTable 转换为Json字符串 if (method == "txtdate") { string json = ""; BO.MakeContractMx bll = new MakeContractMx(); DataSet ds = bll.GetDataTable(); if (ds.Tables.Count > 0) { json =ToJson(ds.Tables[0]); } context.Response.Write(json); return; } } public bool IsReusable { get { return false; } } } #endregion #region Json字符串转换为DataTable 实例方法 public DataTable JsonToDataTable(json) { DataTable dt= ToDataTable(json); return dt; } #endregion #region DataTable 转换为Json 字符串 /// <summary> /// DataTable 对象 转换为Json 字符串 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string ToJson(this DataTable dt) { JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值 ArrayList arrayList = new ArrayList(); foreach (DataRow dataRow in dt.Rows) { Dictionary<string, object> dictionary = new Dictionary<string, object>(); //实例化一个参数集合 foreach (DataColumn dataColumn in dt.Columns) { dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr()); } arrayList.Add(dictionary); //ArrayList集合中添加键值 } return javaScriptSerializer.Serialize(arrayList); //返回一个json字符串 } #endregion #region Json 字符串 转换为 DataTable数据集合 /// <summary> /// Json 字符串 转换为 DataTable数据集合 /// </summary> /// <param name="json"></param> /// <returns></returns> public static DataTable ToDataTable(this string json) { DataTable dataTable = new DataTable(); //实例化 DataTable result; try { JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值 ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json); if (arrayList.Count > 0) { foreach (Dictionary<string, object> dictionary in arrayList) { if (dictionary.Keys.Count<string>() == 0) { result = dataTable; return result; } if (dataTable.Columns.Count == 0) { foreach (string current in dictionary.Keys) { dataTable.Columns.Add(current, dictionary[current].GetType()); } } DataRow dataRow = dataTable.NewRow(); foreach (string current in dictionary.Keys) { dataRow[current] = dictionary[current]; } dataTable.Rows.Add(dataRow); //循环添加行到DataTable中 } } } catch { } result = dataTable; return result; } #endregion #region 转换为string字符串类型 /// <summary> /// 转换为string字符串类型 /// </summary> /// <param name="s">获取需要转换的值</param> /// <param name="format">需要格式化的位数</param> /// <returns>返回一个新的字符串</returns> public static string ToStr(this object s, string format = "") { string result = ""; try { if (format == "") { result = s.ToString(); } else { result = string.Format("{0:" + format + "}", s); } } catch { } return result; } #endregion
更多C#中把Datatable转换为Json的5个代码实例相关文章请关注PHP中文网!
CodeGo.net>如何将.NET DateTime转换为JSON
我的WCF网络服务将C#DateTime对象作为JSON返回,如下所示:
“ /日期(1293793200000 1300)/”
我发现了这个
Converting .NET DateTime to JSON
建议使用此方法使用javascript进行转换,
var d = new Date();
d.setTime(1245398693390);
document.write(d);
区别在于我的日期格式中包含1300,这似乎是我的时区,因为距格林尼治标准时间13个小时.
我可以以某种方式修改我的服务以将值调整为从纪元到绝对毫秒数的时间,还是可以修改javascript?
解决方法:
您可以忽略时区偏移-毫秒数始终相对于UTC(请参见http://msdn.microsoft.com/en-us/library/bb412170.aspx的“ DateTime连线格式”部分).偏移量主要表示原始DateTime值是DateTimeKind.Local,但是自历元以来的序列化毫秒始终是相对于GMT的.
ios – 将NSDate转换为JSON日期?
我不知道如何转换它.
//1 nsdate [params setobject:date forKey:kKeyDate]; //2 nsstring NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyy-MM-dd T HH : mm : ss.SSSZ"]; Nsstring *newString = [dateFormat stringFromDate:date]; [params setobject:newString forKey:kKeyDate];
参数在Http请求的主体中被序列化.我知道我正在做的其他事情都是正确的,因为如果我注释掉将NSDate添加到参数中,那么它就可以了.
解决方法
NSDate *CurrentDate = [NSDate date]; NSDateFormatter *DATEFORMATER = [[NSDateFormatter alloc]init]; [DATEFORMATER setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'"]; [DATEFORMATER setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; Nsstring *DATE_STRING = [DATEFORMATER stringFromDate:CurrentDate];
今天关于将Bundle转换为JSON和json转blob的讲解已经结束,谢谢您的阅读,如果想了解更多关于android – org.json.jsonarray无法转换为jsonobject错误、C#中把Datatable转换为Json的5个代码实例、CodeGo.net>如何将.NET DateTime转换为JSON、ios – 将NSDate转换为JSON日期?的相关知识,请在本站搜索。
本文标签: