JSON--List 컬렉션을 JSON 객체로 변환하는 상세 정보

6071 단어 listjson
1. 간단하게 수동으로 키 값을 JSON Object에 맞추고put에서 JSON Array 대상에 맞추기

 List<Article> al = articleMng.find(f);
   System.out.println(al.size());
   HttpServletResponse hsr = ServletActionContext.getResponse();
   if(null == al){
    return ;
   }
   for(Article a : al){
    System.out.println(a.getId()+a.getDescription()+a.getTitle());
   }
   JSONArray json = new JSONArray();
   for(Article a : al){
    JSONObject jo = new JSONObject();
    jo.put("id", a.getId());
    jo.put("title", a.getTitle());
    jo.put("desc", a.getDescription());
    json.put(jo);
   }
   try {
    System.out.println(json.toString());
    hsr.setCharacterEncoding("UTF-8");
    hsr.getWriter().write(json.toString());
   } catch (IOException e) {
    e.printStackTrace();
   }
상기 코드 JSON Array는 도입된 org입니다.json.JSONARray 패키지
그물로sf.json이 JSON Array를 포괄하는 정적 방법:from Object(list) 이것은 인터넷에서 대부분 이 방법으로 JSON을 빠르게 변환하지만 Hibernate 등급 연결 조작과 관련된 대상에 대해 이 방법은 오류를 보고합니다. 맵 파일의 등급 연결 설정을 제거하면 됩니다.
또한list에 대한 요구는 그 중의 요소가 문자열이나 대상이라는 것이다. 그렇지 않으면 JSON은 당신이 원하는 데이터가 무엇인지 모른다.

<many-to-one name="cmsent" column="comment_tid" class="com.fcms.cms.entity.CmsComment" 
  not-null="false" cascade="delete">
그러나 등급 연결 조작은 어쨌든 존재해야 한다. 그렇지 않으면 이후에 데이터가 군더더기 되고 여분이 생길 것이다.
해결 방법은 JSONARray subMsgs = JSONArray입니다.fromObject(object, config);

JsonConfig config = new JsonConfig();
  config.setJsonPropertyFilter(new PropertyFilter() {
   public boolean apply(Object arg0, String arg1, Object arg2) {
     if (arg1.equals("article") ||arg1.equals("fans")) {
      return true;
     } else {
      return false;
     }
   }
  });
설명: 연결된 대상을 만났을 때 자동으로 필터링하고 연결된 대상을 실행하지 않는 필터링 작용을 제공합니다.여기에 hibernate의 설정 관계 매핑 코드를 붙여서 이해를 돕습니다.

<!--   -->
  <many-to-one name="article" class="com.fcms.nubb.article" column="article_id"/>
  
  <!--   -->
  <set name="subMessages" table="sub_message" inverse="true" cascade="all" lazy="false" order-by="date asc">
   <key column="theme_id" />
   <one-to-many class="bbs.po.SubMessage" />
  </set>
요약:
1. JSONArray subMsgs = JSONArray.fromObject(subMessages, config);그 중에서 config는 선택할 수 있습니다. 위의 상황이 발생하면 config 파라미터를 설정할 수 있습니다. 위의 수요가 없으면fromObject(obj) 방법을 사용할 수 있습니다. 이것은 표준 json 대상 형식의 데이터를 변환합니다. 다음과 같습니다.
{["attr", "content", ...}, ...]}
2. JSONObject jTmsg = JSONObject.fromObject(themeMessage, config);이것은 표준적인 포조나 맵 대상을 해석하는 데 전문적으로 사용되는 것이다. 포조 대상의 형식은 말할 것도 없고, 맵의 형식은 이렇다. {"str", "str"}.
---------------------------------------------------------------------------------------------
JSON Array랑 JSON 하기 전에 토할 것 같아!!!
bean

package com.nubb.bean;

import java.io.Serializable;

public class Person implements Serializable{
 private static final long serialVersionUID = 1L;
 private String name;
 private int age;
 private String address;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getAddress() {
  return address;
 }
 public void setAddress(String address) {
  this.address = address;
 }
 
 
}

JsonUtil

package com.nubb.test;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.nubb.bean.Person;


public class JSONSerializer {
  private static final String DEFAULT_CHARSET_NAME = "UTF-8";

  public static <T> String serialize(T object) {
   return JSON.toJSONString(object);
  }

  public static <T> T deserialize(String string, Class<T> clz) {
   return JSON.parseObject(string, clz);
  }

  public static <T> T load(Path path, Class<T> clz) throws IOException {
   return deserialize(
     new String(Files.readAllBytes(path), DEFAULT_CHARSET_NAME), clz);
  }

  public static <T> void save(Path path, T object) throws IOException {
   if (Files.notExists(path.getParent())) {
    Files.createDirectories(path.getParent());
   }
   Files.write(path,
     serialize(object).getBytes(DEFAULT_CHARSET_NAME),
     StandardOpenOption.WRITE,
     StandardOpenOption.CREATE,
     StandardOpenOption.TRUNCATE_EXISTING);
  }
  
  public static void main(String[] args) {
   Person person1 = new Person();
   person1.setAddress("address");
   person1.setAge(11);
   person1.setName("amao");
   
   Person person2 = new Person();
   person2.setAddress("address");
   person2.setAge(11);
   person2.setName("amao");
   
   List<Person> lp = new ArrayList<Person>();
   lp.add(person1);
   lp.add(person2);
   System.out.println(serialize(lp));
  }
  
}

출력:

[{"address":"address","age":11,"name":"amao"},{"address":"address","age":11,"name":"amao"}]
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기