android - Android:将Json字符串转换为List,反之亦然
问题描述
我正在寻找一个示例和活动代码来将对象列表传输到 Json 字符串中,反之亦然。众所周知,Android 经常被用作(在我的情况下)带有 .NET 的 PC 和 Android 设备本身之间的通信设备。非常常见的操作是将 SMS 消息发送给一组订阅者,这通常以对象列表的形式存在......比如说......
class Man {
public string Number {get;set;}
public string Message {get;set;}
}
所以,List<Man> Men = new List<Man>();
作为基本结构是相当直观的。
我可以在 C#.NET 中转换两种方式
using System;
using Newtonsoft.Json;
using System.Collections.Generic;
public class Program
{
public static void Main() {
List<Man> Men = new List<Man>();
// numbers are just random
Man m1 = new Man();
m1.Number = "+6149168158";
m1.Message = "Hello Bob from 1";
m1.UniqueCode = "0123";
m1.State = 0;
Man m2 = new Man();
m2.Number = "+6146146182";
m2.Message = "Hello Bob from 2";
m2.UniqueCode = "0125";
m2.State = 0;
Men.AddRange(new Man[] { m1, m2 });
string result = JsonConvert.SerializeObject(Men);
Console.WriteLine(result);
List<Man> men = JsonConvert.DeserializeObject<List<Man»(result);
foreach(Man m in men) Console.WriteLine(m.Message);
}
}
public class Man
{
public string Number{get;set;}
public string Message {get;set;}
public string UniqueCode {get;set;}
public int State {get;set;}
}
它可以工作..但是Android方面..就像一个暗物质..我确定它存在,但我无法触摸它..所以,请知道它的人,请在这里发布Android部分,所以其他人会得到这样一个标准要求的好例子。(没有 Gson、Mason 或其他一些......只有 Android 和 JSON ......谢谢......
解决方案
看起来您可能不想使用可用的工具(Gson、Mason 或其他一些工具。)您必须为每个对象手动实现映射器类:android 的本机工具是 JSONArray、JSONObject;在下面的代码中,我提供了一个解码示例 好的,这是Deserializator
public List<Man> DecodeFactor(String json) throws JSONException {
List<Man> list = null;
try
{
JSONArray headarrays=new JSONArray(json);
if(headarrays.length()>0)
{
list=new ArrayList<Man>();
for (int i = 0; i <headarrays.length() ; i++)
{
Man man=new Man();
JSONObject o = headarrays.getJSONObject(i);
man.Message = o.getString("Message");
man.Number = o.getString("Number");
man.UniqueCode = o.getString("UniqueCode");
man.State = o.getInt("State");
list.add(man);
}
}
}catch (Exception ee) { ee.printStackTrace(); }
return list;
}
推荐阅读
- javascript - 点击包装加载问题
- r - 为什么即使我之前已经附加了数据框,我也不能在“for循环”中更改数据框的值?
- java - 尝试使用 Java 高级 REST 客户端查询 Long 类型时出现问题
- javascript - addEventListener 不适用于动态加载内容
- javascript - 如何在 Node.JS 中将原始命令发送到收据打印机?
- python-3.x - 即使重新安装了正确的版本,也会出现“OSError: [WinError 193] %1 is not an valid Win32 application”错误
- google-cloud-platform - 如何为 MySqlToGoogleCloudStorageOperator 使用 field_to_bigquery(self, field) 函数
- swift - Swift 完全忽略了 UIImageView 的动画
- powershell - 无法捕获 NoProcessFoundForGivenName
- mysql - 将周末的计数总和滚动到星期一的计数