- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我试了很多,在这里找到了很多帖子,但无法解决问题..Kinldy 帮助我.!
Json 看起来像这样:
[
{
"IDNumber": 2,
"Name": "PDP",
"FatherName": "DER",
"Age": "AA",
"DateOfBirth": "16th Nov YYYY",
"Occupation": "Senior .NET Dev",
"MartialStatus": "UnMarried",
"Brand": "YYZ",
"UserStatus": "Family"
},
{
"IDNumber": 3,
"Name": "EWR",
"FatherName": "GRT",
"Age": "AA",
"DateOfBirth": "16th May YYYY",
"Occupation": "Executive Shu Shef",
"MartialStatus": "Married",
"Brand": "XXX",
"UserStatus": "Family"
},
{
"IDNumber": 4,
"Name": "TR",
"FatherName": "FR",
"Age": "AA",
"DateOfBirth": "29th Nov YYYY",
"Occupation": "Senior Consultant",
"MartialStatus": "Married",
"Brand": "XXY",
"UserStatus": "Family"
},
{
"IDNumber": 5,
"Name": "S M DEWW",
"FatherName": "M FRE",
"Age": "21",
"DateOfBirth": "DD MM 1994",
"Occupation": "Student | Tutor",
"MartialStatus": "UnMarried",
"Brand": "NED",
"UserStatus": "Friend"
}
]
现在是 PersonData 类的代码
public class PersonData implements Serializable{
private static final long serialVersionUID = 1L;
@SerializedName("IDNumber")
public String IDNumber;
@SerializedName("Name")
public String Name;
@SerializedName("FatherName")
public String FatherName;
.... for all fields....
@SerializedName("UserStatus")
public String UserStatus;
public PersonData() {
}
}
异步类
public class Main extends ListActivity {
Button GetData;
ListView listView;
String URL = "http://192.168.0.100:7001/com.faisal.REST_WS/api/v1/json";
List<PersonData> pd = new ArrayList<PersonData>();
MyCustomAdapter dataAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GetData = (Button) findViewById(R.id.btn_GET);
GetData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
APICaller caller = new APICaller();
caller.execute();
}
});
}
class APICaller extends AsyncTask<Object, Object, Object> {
@Override
protected Object doInBackground(Object... params) {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(URL);
ResponseHandler<String> handler = new BasicResponseHandler();
Object result = new Object();
try {
result = client.execute(request, handler);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
@SuppressWarnings("unchecked")
@Override
protected void onPostExecute(Object result) {
String json = result.toString();
Gson gson = new Gson();
Type type = new TypeToken<PersonData>() {
}.getType();
List<PersonData> pd = (List<PersonData>) gson
.fromJson(json, type);
dataAdapter = new MyCustomAdapter(getApplicationContext(), pd);
listView.setAdapter(dataAdapter);
}
}
现在是自定义适配器
public class MyCustomAdapter extends ArrayAdapter<PersonData> {
private final List<PersonData> list;
private final Context context;
// private final int viewid;
public MyCustomAdapter(Context context, List<PersonData> list) {
super(context, R.layout.rowlayout, list);
this.context = context;
this.list = list;
// this.viewid = R.layout.rowlayout;
}
class ViewHolder {
protected TextView idnumber;
protected TextView name;
protected TextView fathername;
protected TextView occupation;
protected TextView age;
protected TextView ms;
protected TextView us;
protected TextView dob;
protected TextView brand;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
LayoutInflater inflator = ((Activity) context).getLayoutInflater();
view = inflator.inflate(R.layout.rowlayout, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.idnumber = (TextView) view.findViewById(R.id.idn);
viewHolder.name = (TextView) view.findViewById(R.id.name);
viewHolder.fathername = (TextView) view.findViewById(R.id.fn);
viewHolder.occupation = (TextView) view.findViewById(R.id.Occup);
viewHolder.age = (TextView) view.findViewById(R.id.age);
viewHolder.dob = (TextView) view.findViewById(R.id.DofB);
viewHolder.ms = (TextView) view.findViewById(R.id.M_S);
viewHolder.us = (TextView) view.findViewById(R.id.U_S);
viewHolder.brand = (TextView) view.findViewById(R.id.brand);
view.setTag(viewHolder);
ViewHolder holder = (ViewHolder) view.getTag();
holder.idnumber.setText(list.get(position).IDNumber);
holder.name.setText(list.get(position).Name);
holder.fathername.setText(list.get(position).FatherName);
holder.occupation.setText(list.get(position).Occupation);
holder.age.setText(list.get(position).Age);
holder.ms.setText(list.get(position).MartialStatus);
holder.us.setText(list.get(position).UserStatus);
holder.brand.setText(list.get(position).Brand);
holder.dob.setText(list.get(position).DateOfBirth);
return view;
}
}
它给出了错误
01-16 13:21:43.708: E/AndroidRuntime(1594): FATAL EXCEPTION: main
01-16 13:21:43.708: E/AndroidRuntime(1594): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Expected BEGIN_OBJECT but was STRING at line 1 column 1
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory
$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
at com.google.gson.Gson.fromJson(Gson.java:803)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at com.faisal.api_1_gson.Main$APICaller.onPostExecute(Main.java:86)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:374)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read
(ReflectiveTypeAdapterFactory.java:165)
... 15 more
请在这里提供帮助,自从过去两天以来我一直坚持下去,请原谅我这里有关于这个主题的问题,但正如我所说我无法让它工作..
最佳答案
我认为问题在于您用来解析字符串的类应该具有完全相同的结构。您的 JSON 字符串是一个 Person 对象列表。因此,您应该使用的类应该如下所示:
public class Persons {
List<PersonData> persons;
}
然后在 onPostExecute 中:
List<PersonData> pd = gson.fromJson(json, Persons.class);
并且肯定存在 ID 号为整数的错误,因此您应该更改 PersonData 类中的数据类型,如@Fran 所述
编辑 1:
上述方法的问题在于,如果您的 JSON 数组包装在一个对象中,这种方法就可以工作。
类似的东西:
{
"persons":[
{
"IDNumber":2,
"Name":"Saqib",
"FatherName":"Sami",
"Age":"AA",
"DateOfBirth":"16th Nov YYYY",
"Occupation":"Senior .NET Dev",
"MartialStatus":"UnMarried",
"Brand":"YYZ",
"UserStatus":"Family"
}
]
...
...
}
但是您的数据没有包装在对象中,所以这里是您可以直接解析 JSON 数组的方法。您的方法几乎是正确的,但您使用了错误的类型标记。
String jsonString = "[\r\n {\r\n \"IDNumber\": 2,\r\n \"Name\": \"Saqib\",\r\n \"FatherName\": \"Sami\",\r\n \"Age\": \"AA\",\r\n \"DateOfBirth\": \"16th Nov YYYY\",\r\n \"Occupation\": \"Senior .NET Dev\",\r\n \"MartialStatus\": \"UnMarried\",\r\n \"Brand\": \"YYZ\",\r\n \"UserStatus\": \"Family\"\r\n },\r\n {\r\n \"IDNumber\": 3,\r\n \"Name\": \"Asim\",\r\n \"FatherName\": \"Sami\",\r\n \"Age\": \"AA\",\r\n \"DateOfBirth\": \"16th May YYYY\",\r\n \"Occupation\": \"Executive Shu Shef\",\r\n \"MartialStatus\": \"Married\",\r\n \"Brand\": \"XXX\",\r\n \"UserStatus\": \"Family\"\r\n },\r\n {\r\n \"IDNumber\": 4,\r\n \"Name\": \"Wali\",\r\n \"FatherName\": \"Sami\",\r\n \"Age\": \"AA\",\r\n \"DateOfBirth\": \"29th Nov YYYY\",\r\n \"Occupation\": \"Senior Consultant\",\r\n \"MartialStatus\": \"Married\",\r\n \"Brand\": \"XXY\",\r\n \"UserStatus\": \"Family\"\r\n },\r\n {\r\n \"IDNumber\": 5,\r\n \"Name\": \"S M Sami Uddin\",\r\n \"FatherName\": \"M Uddin\",\r\n \"Age\": \"21\",\r\n \"DateOfBirth\": \"DD MM 1994\",\r\n \"Occupation\": \"Student | Tutor\",\r\n \"MartialStatus\": \"UnMarried\",\r\n \"Brand\": \"NED\",\r\n \"UserStatus\": \"Friend\"\r\n }\r\n]";
Gson gson = new Gson();
Type listType = new TypeToken<List<PersonData>>() {}.getType();
List<PersonData> persons = (List<PersonData>) gson.fromJson(jsonString,
listType);
System.out.println(persons.size());
关于android - 使用 GSON 解析 JSON 以在 Android 中填充 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27979544/
我一直在使用 AJAX 从我正在创建的网络服务中解析 JSON 数组时遇到问题。我的前端是一个简单的 ajax 和 jquery 组合,用于显示从我正在创建的网络服务返回的结果。 尽管知道我的数据库查
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我在尝试运行 Android 应用程序时遇到问题并收到以下错误 java.lang.NoClassDefFoundError: com.parse.Parse 当我尝试运行该应用时。 最佳答案 在这
有什么办法可以防止etree在解析HTML内容时解析HTML实体吗? html = etree.HTML('&') html.find('.//body').text 这给了我 '&' 但我想
我有一个有点疯狂的例子,但对于那些 JavaScript 函数作用域专家来说,它看起来是一个很好的练习: (function (global) { // our module number one
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我需要编写一个脚本来获取链接并解析链接页面的 HTML 以提取标题和其他一些数据,例如可能是简短的描述,就像您链接到 Facebook 上的内容一样。 当用户向站点添加链接时将调用它,因此在客户端启动
在 VS Code 中本地开发时,包解析为 C:/Users//AppData/Local/Microsoft/TypeScript/3.5/node_modules/@types//index而不是
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我被赋予了将一种语言“翻译”成另一种语言的工作。对于使用正则表达式的简单逐行方法来说,源代码过于灵活(复杂)。我在哪里可以了解更多关于词法分析和解析器的信息? 最佳答案 如果你想对这个主题产生“情绪化
您好,我在解析此文本时遇到问题 { { { {[system1];1;1;0.612509325}; {[system2];1;
我正在为 adobe after effects 在 extendscript 中编写一些代码,最终变成了 javascript。 我有一个数组,我想只搜索单词“assemble”并返回整个 jc3_
我有这段代码: $(document).ready(function() { // }); 问题:FB_RequireFeatures block 外部的代码先于其内部的代码执行。因此 who
背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件。它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口。相当于去掉host,这样省掉了些
1.首先贴上我试验成功的代码 复制代码 代码如下: protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 X
【PHP代码】 复制代码 代码如下: $stmt = mssql_init('P__Global_Test', $conn) or die("initialize sto
在SQL查询分析器执行以下代码就可以了。 复制代码代码如下: declare @t varchar(255),@c varchar(255) declare table_cursor curs
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习🤭 题目 题目一: 二维数组中的
我是一名优秀的程序员,十分优秀!