如何将json解析成jsonarray

如何将json解析成jsonarray,第1张

有两种方法实现:
(1)直接转换:
创建JSONArray对象、JSONObject对象,通过put方法将其数据以键值对的形式填充,如例:
//假如有一个Java实体类Person,包括以下属性:phone、sex、married、address。
ArrayList<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 3; i++) {
personsadd(new Person("13867", "女", true, "北京朝阳区"));//填充Java实体类集合
}
JSONArray array = new JSONArray();// Json格式的数组形式
JSONObject obj;//json格式的单个对象形式
for (int i = 0; i < personssize(); i++) {
obj = new JSONObject();
//依次填充每一个Java实体对象
try {
objput("phone", personsget(i)getPhone());//json通过put方式以key-value形式填充
objput("sex", personsget(i)getSex());
objput("married", personsget(i)getMarried());
objput("address", personsget(i)getAddress());
arrayput(obj);//将JSONObject添加入JSONArray
} catch (JSONException e) {
eprintStackTrace();
}
}
(2)通过GSON工具实现:
只需要创建GSON对象,通过toJson方法转换即可。如例:
//模拟Java数据
Person person = new Person("敏敏", 23, "女", "北京市海淀区");
//创建GSON对象
Gson gson = new Gson();
//调用toJson方法即可转换为字符串的json格式
String json = gsontoJson(person);

[["北京市"],["上海市"],["合肥市","芜湖市","蚌埠市"]] 这是一个JsonArray ,先获取JsonArray对象,然后再次获取获取JsonArray对象:子JsonArray对象=父JsonArray对象get(index值);最后,获取子JsonArray对象里面的数据,子JsonArray对象get(index值);

package com;
import javautilList;
import comKensouPerson;
import comalibabafastjsonJSON;
public class Yuma
{
public static void main(String[] args)
{
String result =
        "{\"data1\":[{\"name\":\"aa\",\"age\":\"12\"},{\"name\":\"bb\",\"age\":\"13\"}],\"data2\":{\"nowpage\":1,\"pagesize\":2}}";
Kensou ps = JSONparseObject(result, Kensouclass);
Systemoutprintln(ps);
List<Person> data1 = psgetData1();
for(int i = 0; i < data1size(); i++)
{
Person p = data1get(i);
Systemoutprintln(p);
}
Person data2 = psgetData2();
Systemoutprintln(data2);
}
}
/
  模型对象不需要构造函数, 至少只需要setter方法<br>
  Person类可以是内嵌类,也可以是外部类 <br>
  Kensou类只能是外部类<br>
  集合类可以是数组或者List类型<br>
  <p>
  使用的是<font color="red">fastjson-1136jar</font>
 /
class Kensou
{
private List<Person> data1;
private Person data2;
public List<Person> getData1()
{
return data1;
}
public void setData1(List<Person> data1)
{
thisdata1 = data1;
}
public Person getData2()
{
return data2;
}
public void setData2(Person data2)
{
thisdata2 = data2;
}
@Override
public String toString()
{
return Stringformat("Kensou [data1=%s, data2=%s]", data1, data2);
}
class Person
{
private String name;
private int age;
private int nowpage;
private int pagesize;
public String getName()
{
return name;
}
public void setName(String name)
{
thisname = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
thisage = age;
}
public int getNowpage()
{
return nowpage;
}
public void setNowpage(int nowpage)
{
thisnowpage = nowpage;
}
public int getPagesize()
{
return pagesize;
}
public void setPagesize(int pagesize)
{
thispagesize = pagesize;
}
@Override
public String toString()
{
return Stringformat("Person [name=%s, age=%s, nowpage=%s, pagesize=%s]", name, age, nowpage, pagesize);
}
}
}

安装Jsonnet,using NewtonsoftJsonLinq;
string result = stringEmpty;
using (StreamReader sr = new StreamReader(FileOpen(@"D:\csharp\output\output\datajson", FileModeOpen)))
{
result = srReadToEnd();
}
JObject jo = (JObject)NewtonsoftJsonJsonConvertDeserializeObject(result);
ConsoleWriteLine(jo["data"]["symbols"][0]["parts"][0]["means"][1]ToString());
ConsoleReadLine();
datajson就是存放的
{"errno":0,"data":{"word_name":"\u597d","symbols":[{"ph_zh":"h\u01ceo","parts":[{"part":"\u5f62","means":["good","fine","nice"]}]},{"ph_zh":"h\u00e0o","parts":[{"part":"\u52a8","means":["like","love","be fond of"]},{"part":"\u540d","means":["a surname"]}]}]},"to":"en","from":"zh"}

1、使用原生的解析:
String json = "";
JSONArray array= new JSONArray(json);
//遍历数组里的值,得到每个独立的对象,然后获取对应的值设置到声明好的对象中,最终创建对象完成后添加到集合中,如我自己代码里的片段:
for (int j = 0; j < arraylength(); j++) {
obj = arraygetJSONObject(j);
Data data = new Data();
datasetThumbnail(objgetString("thumbnail"));
datasetTitle(objgetString("title"));
datasetUrl(objgetString("url"));
mDataListadd(data);
}
2、使用第三方包如Gson,但是这个你得保证你的JSON字符串个z


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12867972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存